我正在尝试将具有内部格式的纹理附加GL_R32UI
到帧缓冲区,以用作 ID 缓冲区。但是,即使它是唯一的附件,也会glCheckFramebufferStatus
不断出现。GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT
这对我来说很奇怪,因为 OpenGL 4.2 规范似乎声明这GL_R32UI
是 OpenGL 实现在附加到帧缓冲区时必须支持的格式之一。我怀疑这是驱动程序错误。我是对的,还是谁能告诉我我忽略了什么?
我正在尝试将具有内部格式的纹理附加GL_R32UI
到帧缓冲区,以用作 ID 缓冲区。但是,即使它是唯一的附件,也会glCheckFramebufferStatus
不断出现。GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT
这对我来说很奇怪,因为 OpenGL 4.2 规范似乎声明这GL_R32UI
是 OpenGL 实现在附加到帧缓冲区时必须支持的格式之一。我怀疑这是驱动程序错误。我是对的,还是谁能告诉我我忽略了什么?
我解决了我自己的问题。
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
。