我通过渲染到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);
但是,我从不进入循环,这意味着不会读取任何值。我忘记了什么吗?