0

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

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

4

0 回答 0