4

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

这对我来说很奇怪,因为 OpenGL 4.2 规范似乎声明这GL_R32UI是 OpenGL 实现在附加到帧缓冲区时必须支持的格式之一。我怀疑这是驱动程序错误。我是对的,还是谁能告诉我我忽略了什么?

4

1 回答 1

7

我解决了我自己的问题。

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”参数,即使您为 data 参数传递了一个空指针。如果您的内部格式是一个完整的格式,您需要提供类似的格式GL_RED_INTEGER,而不是类似的格式GL_RED

于 2012-11-05T11:24:55.820 回答