映射 PBO 时,我需要测试 glReadPixels 的 INVALID_OPERATION 错误。但没有得到缓冲区映射的确切含义。在代码部分之后:
glGenBuffers(1, iBufferObj);
// Bind the buffer
glBindBuffer(GL_PIXEL_PACK_BUFFER, *iBufferObj);
glBufferData(GL_PIXEL_PACK_BUFFER, iSize, 0, GL_STREAM_READ); // iSize is my framebuffer size
glReadPixels(0, 0, iSurfaceWidth, iSurfaceHeight, GL_RGBA, GL_UNSIGNED_BYTE, 0);
ptr = (GLuint*)glMapBufferRange(GL_PIXEL_PACK_BUFFER, 0, iSize, GL_MAP_READ_BIT);
glReadPixels(0, 0, iSurfaceWidth, iSurfaceHeight, GL_RGBA, GL_UNSIGNED_BYTE, cBuff); // cBuff client buffer container
glUnmapBuffer(GL_PIXEL_PACK_BUFFER);
由于缓冲区是用 glMapBufferRange() 映射的,因此在第二次 glReadPixel 调用中预期错误是否正确?
你能帮助理解映射缓冲区的概念吗?