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

标签 opengl graphics textures framebuffer render-to-texture

我正在尝试附加具有内部格式的纹理 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 这样的格式.

关于opengl - 将整数纹理附加到帧缓冲区,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13230721/

相关文章:

opengl - 为什么要绑定(bind)OpenGL缓冲区对象?

c++ - 将 wxwidgets opengl 应用程序移植到不依赖库的应用程序

c++ - 了解 glClearColor 值

java - 组件以不寻常的方式呈现

c++ - 无法将纹理绑定(bind)到 GL_QUADS

opengl - OpenGL 纹理的纵横比会影响性能吗?

c# - .Net DrawString 字体引用在调用后发生变化

java - 查看管道和 3D 转换

c++ - OpenGL 单 channel 到多 channel 的可行性

c# - 循环滚动纹理