1

最近、私の進行中のゲーム エンジンが、可能であってはならない場所で OpenGL エラーをスローし始めました。いくつかのフレームをレンダリングした後、突然 glColor からエラーが発生し始めました。

print(gl.GetError()) --> nil
gl.Color(1, 1, 1, 1)
print(gl.GetError()) --> INVALID_OPERATION

ここで glColor を呼び出さないと、後で glMatrixMode から無効な操作エラーが発生します。

GL マニュアルによると、glColor は決してエラーを発生させるべきではなく、glBegin と glEnd の間にある場合にのみ glMatrixMode を発生させるべきであり、私が確認した場合はそうではありません。私が認識していない、これらの関数がエラーを発生させる可能性がある他の理由はありますか? おそらく render-to-texture/renderbuffer 拡張機能に関連していますか? 私は狂ったようにデバッグしてきましたが、そのような失敗の原因となるものは何も見つかりません。プログラム全体が大きすぎて複雑すぎて、ここに投稿することはできません。OpenGL API と SDL の薄いラッパーである luagl を使用しています。報告されているバージョンは次のとおりです: 2.1 Mesa 7.10.2

4

2 に答える 2

1

https://bugs.freedesktop.org/show_bug.cgi?id=48535 これは実際にはドライバーのバグのようです。>。>

于 2012-04-16T10:36:07.467 に答える
1

アクティブな OpenGL コンテキストがない場合、glColor はエラーになります。複数のコンテキストまたは glBindFramebuffer を使用している場合は、有効なものを常に切り替えることを確認してください。また、複数のスレッドから OpenGL 呼び出しを使用する場合は、特別な注意が必要であることにも注意してください。

于 2012-04-10T12:17:27.433 に答える