我通过渲染到 FBO 创建了一个纹理,并且很长一段时间以来我一直在尝试读取纹理但没有成功。在我尝试使用 glReadPixels() 和 glGetTexImage()(访问冲突错误)失败后,我决定尝试使用 PBO。
这是我在渲染到帧缓冲区并成功创建纹理后立即使用的代码:
glReadBuffer(GL_FRONT);
glBindBuffer(GL_PIXEL_PACK_BUFFER, PBO);
glReadPixels(0, 0, 1024, 768, GL_RGB, GL_UNSIGNED_BYTE, 0);
glBindBuffer(GL_PIXEL_PACK_BUFFER, PBO);
GLubyte* ptr = (GLubyte*)glMapBuffer(GL_PIXEL_PACK_BUFFER, GL_READ_ONLY);
if (ptr)
{
//processPixels(ptr, ...);
glUnmapBuffer(GL_PIXEL_PACK_BUFFER);
}
glBindBuffer(GL_PIXEL_PACK_BUFFER, 0);
但是,我从不进入循环,这意味着没有读取任何值。我是不是忘记了什么?