1

フレームバッファから非同期的に読み込もうとしていますが、glReadPixels() は INVALID_OPERATION エラーを生成します。

このエラーの原因を読みましたが、コードに問題は見つかりませんでした:

 int PBOHandle = glGenBuffers(); // PBOHandle != 0
 int Width = Display.getDisplayMode().getWidth(); // 800
 int Height = Display.getDisplayMode().getHeight();// 600
 glReadBuffer(GL_FRONT);
 glBindBuffer(GL_PIXEL_PACK_BUFFER, PBOHandle);
 glReadPixels(0, 0, Width, Height, GL_RGBA, GL_UNSIGNED_BYTE, 0);
 // GL_INVALID_OPERATION right here
 glBindBuffer(GL_PIXEL_PACK_BUFFER, PBOHandle);
 ByteBuffer Buffer = glMapBuffer(GL_PIXEL_PACK_BUFFER, GL_READ_WRITE, null);
 /* stuff */
 glUnmapBuffer(GL_PIXEL_PACK_BUFFER);
 glBindBuffer(GL_PIXEL_PACK_BUFFER, 0);   
4

1 に答える 1

2

実際のピクセル バッファ オブジェクトが正しく作成されていません。あなたがしたことは、名前を作成することだけでした。glBufferData()実際のデータ ストアを作成するには、 を呼び出す必要があります。NULLユニット化されたバッファを作成するためのデータ ポインタとして使用します。

于 2014-03-28T19:46:14.360 に答える