2012-04-10 9 views
1

最近、ゲームエンジンが進行中で、OpenGLエラーが起こらないようになっています。いくつかのフレームをレンダリングした後、突然、私はglColorからエラーを取得を開始:glColor、glMatrixModeが "Invalid operation"エラーを不思議にして返す

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

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

GLマニュアルによると、glColorは決してエラーを発生させるべきではなく、glBeginとglEndの間にある場合にのみglMatrixModeが発生します。これらの機能が私が気付いていないエラーを発生させる他の理由はありますか?多分レンダーからテクスチャ/レンダバッファ拡張に関連するでしょうか?私は怒っているようなデバッグをしていますが、そのような失敗の原因となるものは見つけられません。プログラム全体が少し大きすぎてここに投稿するのは複雑です。これは、OpenGL APIとSDLの周りの薄いラッパーであるluaglを使用しています。報告されたバージョンは次のとおりです:2.1 Mesa 7.10.2

答えて

1

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

+0

OpenGLコンテキストはコンテキスト間を移動しても問題ありません。スレッドを作成するためのOpenGLコンテキストの制限はありません。コンテキストの移行をアンバインドして再バインドするだけで済みます。 – datenwolf

+0

@datenwolfありがとう、私の答えを編集しました。 –

+0

私はそれをやっていませんが、GLコンテキストをどうにか失っている可能性はありますか? – Rena

関連する問題