将整数纹理附加到帧缓冲区

时间:2012-11-05 11:00:27

标签: opengl graphics textures framebuffer render-to-texture

我正在尝试将内部格式为GL_R32UI的纹理附加到帧缓冲区,以用作ID缓冲区。但是,glCheckFramebufferStatus会一直提出GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT,即使它是唯一的附件。

这对我来说很奇怪,因为OpenGL 4.2规范似乎表明GL_R32UI是OpenGL实现连接到framebuffers时必须支持的格式之一。我怀疑这是一个驱动程序错误。我是对的,或者任何人都可以告诉我我在忽视什么?

1 个答案:

答案 0 :(得分:6)

我解决了自己的问题。

void glTexImage2D(GLenum target,
    GLint level,
    GLint internalFormat,
    GLsizei width,
    GLsizei height,
    GLint border,
    GLenum format,
    GLenum type,
    const GLvoid * data);

当调用glTexImage2D来创建纹理时,第7个参数'format'需要对应于第3个'internalFormat'参数,即使您为数据参数传递空指针也是如此。如果您的内部格式是整数格式,则需要提供GL_RED_INTEGER等格式,而不是像GL_RED这样的格式。