LWJGL使用PBO读取像素失败



我试图从framebuffer异步读取,但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);   

您没有正确创建一个真正的像素缓冲区对象。您所做的只是为one创建一个名称。必须调用glBufferData()来创建实际的数据存储。使用NULL作为数据指针来创建一个统一的缓冲区

最新更新