0
렌더 버스로 오프 스크린 프레임 버퍼에 삼각형을 렌더링하는 데 LWJGL을 사용하고 있습니다. 장면을 렌더링 한 후, glReadPixels
을 사용하여 렌더 버퍼에서 RAM으로 데이터를 읽습니다. 처음 몇 프레임은 훌륭하게 작동하지만 프로그램이 충돌합니다 (SEGFAULT 또는 SIGABRT, ...).몇 프레임 후에 glReadPixels에서 LWJGL이 충돌합니다.
내가 뭘 잘못하고 있니? 어떠한 방식의 ByteBuffer 액세스 기본적 glReadPixels
, ByteBuffer.get()
사용하거나
//Create memory buffer in RAM to copy frame from GPU to.
ByteBuffer buf = BufferUtils.createByteBuffer(3*width*height);
while(true){
// Set framebuffer, clear screen, render objects, wait for render to finish, ...
...
//Read frame from GPU to RAM
glReadPixels(0, 0, width, height, GL_RGB, GL_UNSIGNED_BYTE, buf);
//Move cursor in buffer back to the begin and copy the contents to the java image
buf.position(0);
buf.get(imgBackingByteArray);
//Use buffer
...
}