【问题标题】:Attaching integer textures to a framebuffer将整数纹理附加到帧缓冲区
【发布时间】:2012-11-05 11:00:26
【问题描述】:

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

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

【问题讨论】:

  • 你使用什么格式?
  • 我认为您正在逐步接近我刚刚制定的解决方案 :)
  • 很高兴它的工作:)。如果您有兴趣,我在第 163 页的spec 中找到了它。
  • 啊,我明白了。现在我知道去哪里找了。

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


【解决方案1】:

我解决了我自己的问题。

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这样的格式。

【讨论】:

  • 请注意,glIntercept 之类的工具将允许您通过向您提供错误消息来检测此错误。使用调试上下文和 ARB_debug_output 扩展也是如此。
猜你喜欢
  • 1970-01-01
  • 2014-12-05
  • 2016-01-01
  • 2013-07-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-09-22
  • 2015-02-19
相关资源
最近更新 更多