无法使用PBO和glReadPixels读取纹理值

时间:2020-06-18 08:38:27

标签: c++ opengl textures pbo

我通过渲染到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);

但是,我从不进入循环,这意味着不会读取任何值。我忘记了什么吗?

0 个答案:

没有答案
相关问题