まあ、私はLWJGLを使ってOpenGLでウィンドウのスクリーンショットを撮ろうとしています。ここでは、コードがあります:glReadPixels()がByteBufferを埋められない
ByteBuffer pixels = ByteBuffer.allocateDirect(800*600*4);
pixels.order(ByteOrder.nativeOrder());
while(!Display.isCloseRequested()) {
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
render();
Display.update();
// "Screenshot" block
if(Keyboard.isKeyDown(Keyboard.KEY_Q)) {
pixels.clear();
glReadPixels(0, 0, 800, 600, GL_RGBA, GL_UNSIGNED_BYTE, pixels);
pixels.flip();
// pixels.position() and pixels.limit() tells us that there is nothing in the buffer
// ...
}
}
そして...私はすでにDisplay.update前に、 "スクリーンショット" ブロックを配置するように、コードのさまざまなバージョンを試してみた
()。また、glReadBuffer(GL_BACK/GL_FRONT)とglDrawBuffer(GL_BACK/GL_FRONT)の組み合わせを使用しないでください。
すべてのOpenGLの状態とレンダリングが無効になっているため、空白の画面のみが表示され、glReadPixelsを使用して試しました。空の画面がバッファにあると仮定しますが、バッファには何もありません。
glGetError()ではエラーは発生しません。
私はよく動作する同様のC +バージョンを持っています。
私はNVIDIA Corporation GeForce GTS 450/PCI/SSE2でWindows 7、OpenGL 4.10、およびLWJGL 2.7.1を実行しています。
だから何が問題なのですか?何か案は?前もって感謝します。