さて、私はLWJGLを使用してOpenGLのウィンドウのスクリーンショットを撮ろうとしています。コードは次のとおりです。
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()の前に「Screenshot」ブロックを配置するなど、さまざまなバージョンのコードをすでに試しました。また、glReadBuffer(GL_BACK / GL_FRONT)とglDrawBuffer(GL_BACK / GL_FRONT)の組み合わせを使用しても無駄になります。
すべてのOpenGL状態とレンダリングを無効にしたので、空白の画面のみが表示され、glReadPixelsを使用してみました。空白の画面がバッファにあると想定されますが、バッファには何もありません。
glGetError()はエラーを生成しません。
正常に動作する同様のC+バージョンがあります。
NVIDIA Corporation GeForce GTS 450 / PCI /SSE2でWindows7、OpenGL 4.10、およびLWJGLバージョン2.7.1を実行しています。
だから問題は何ですか?何か案は?前もって感謝します。