使用内部格式为GL_R16_SNORM的纹理时,GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT

伊沃·斯卡利基(IvoSkalický)

我正在使用OpenGL渲染16位灰度图像,并且需要获取渲染的数据以在不进行位深度抽取的情况下进行缓冲。我的代码在Intel®HD Graphics 4000上运行良好,但是在nVidia图形卡(NVIDIA Corporation GeForce G 105M / PCIe / SSE2NVIDIA Corporation GeForce GT 640M LE / PCIe / SSE2)上,当我尝试渲染时,状态为GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT失败使用内部格式GL_R16_SNORM进行纹理处理当我使用GL_R16格式时,它可以工作,但是我也会释放渲染纹理的所有负值。使用Intel HD Graphics,它可以同时使用GL_R16_SNORM和GL_16值。

glTexImage2D(GL_TEXTURE_2D, 0, GL_R16_SNORM, width, height, 0, GL_RED, GL_SHORT, null);
glBindFramebuffer(GL_FRAMEBUFFER, frameBufferId);
glFramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D, textureId, 0);
glDrawBuffers(1, new int[] {GL_COLOR_ATTACHMENT0}, 0);
int status = gl.glCheckFramebufferStatus(GL.GL_FRAMEBUFFER); 

nVidia卡上GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT状态的原因是什么?您能建议如何调试这种情况吗?(不幸的是glGetError()== GL_NO_ERROR)

编辑:经过进一步测试,我发现它也可以在ATI图形卡上使用。正如Reto Koradi回答的那样,OpenGL 4.4之前的版本中的支持是特定于制造商的,似乎可以在ATI和Intel卡上使用,但不能在nVidia卡上使用。

经过测试的图形卡

雷托·科拉迪(Reto Koradi)

GL_R16_SNORM 仅在OpenGL 4.4中成为必需的颜色可渲染格式。

如果查看4.3规范中的大型纹理格式表(从第179页开始),则会检查“颜色可渲染”字段R16_SNORM但是,然后在第178页上的“所需的纹理格式”下,R16_SNORM被列为“仅纹理的颜色格式”。这意味着虽然实现可以支持以这种格式进行呈现,但不是必需的。

在4.4规范中,表格(从第188页开始)基本上是相同的。R16_SNORM在“ CR”列中有一个复选标记,表示“可显色”。但是规则被改变了。在4.4及更高版本中,所有颜色可渲染格式都必须由实现支持。现在,不再包含列表,而是在第186页上的“所需纹理格式”部分仅引用了该表。在规范的更改日志部分中也提到了这一点。

这意味着除非您至少需要OpenGL 4.4,否则对渲染为这种格式的支持确实取决于供应商/硬件。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

将立方体贴图纹理附加到帧缓冲区对象(FBO)时为GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT

来自分类Dev

glCheckFramebufferStatus返回36054 GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT

来自分类Dev

GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT尝试创建多样本帧缓冲区

来自分类Dev

glGetTexImage读取太多纹理格式为GL_ALPHA的数据

来自分类Dev

使用GL_TRIANGLES绑定纹理

来自分类Dev

使用GL_TRIANGLES绑定纹理

来自分类Dev

使用Open GL无法正确加载bmp纹理

来自分类Dev

使用GL_TEXTURE_1D纹理化对象

来自分类Dev

GL最大纹理大小策略

来自分类Dev

GL_R16和GL_R16UI之间的区别?

来自分类Dev

threejs纹理导致“ GL错误:GL_INVALID_OPERATION:glDrawElements”

来自分类Dev

GLSL 150 GL 3.2黑色纹理

来自分类Dev

Android GL 如何绘制不同的纹理

来自分类Dev

Vulkan 中的 VK_FORMAT_R16_UINT 纹理格式

来自分类Dev

GL_COLOR_ATTACHMENT是做什么的?

来自分类Dev

为什么格式为>,>>>,>> 9.99时字段值为1'000,24而不是1,000.24,正在进行4gl?

来自分类Dev

使用目标GL_TEXTURE_2D在纹理上渲染相机预览

来自分类Dev

在Opengl ES 2.0中支持纹理格式GL_RGB_422_APPLE(每像素8位)吗?

来自分类Dev

使用GL_POINTS时,gl_Position是否设置矩形的中心?

来自分类Dev

Three.js使用framebuffer作为纹理

来自分类Dev

使用Mapbox GL JS绘制半径为英里/米的圆

来自分类Dev

内部格式指定为GL_RGBA的哪种数据类型?

来自分类Dev

iOS 8 SDK中的GL_DRAW_FRAMEBUFFER_APPLE和GL_READ_FRAMEBUFFER_APPLE在哪里?

来自分类Dev

iOS 8 SDK中的GL_DRAW_FRAMEBUFFER_APPLE和GL_READ_FRAMEBUFFER_APPLE在哪里?

来自分类Dev

GL错误:尝试使用VBO渲染时内存不足

来自分类Dev

GL错误:尝试使用VBO渲染时内存不足

来自分类Dev

十进制数字值日期时间格式为4gl

来自分类Dev

清除DRAW帧缓冲区仅在附加到GL_COLOR_ATTACHMENT0时才有效吗?

来自分类Dev

取消绑定Open GL ES纹理的正确方法吗?

Related 相关文章

  1. 1

    将立方体贴图纹理附加到帧缓冲区对象(FBO)时为GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT

  2. 2

    glCheckFramebufferStatus返回36054 GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT

  3. 3

    GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT尝试创建多样本帧缓冲区

  4. 4

    glGetTexImage读取太多纹理格式为GL_ALPHA的数据

  5. 5

    使用GL_TRIANGLES绑定纹理

  6. 6

    使用GL_TRIANGLES绑定纹理

  7. 7

    使用Open GL无法正确加载bmp纹理

  8. 8

    使用GL_TEXTURE_1D纹理化对象

  9. 9

    GL最大纹理大小策略

  10. 10

    GL_R16和GL_R16UI之间的区别?

  11. 11

    threejs纹理导致“ GL错误:GL_INVALID_OPERATION:glDrawElements”

  12. 12

    GLSL 150 GL 3.2黑色纹理

  13. 13

    Android GL 如何绘制不同的纹理

  14. 14

    Vulkan 中的 VK_FORMAT_R16_UINT 纹理格式

  15. 15

    GL_COLOR_ATTACHMENT是做什么的?

  16. 16

    为什么格式为>,>>>,>> 9.99时字段值为1'000,24而不是1,000.24,正在进行4gl?

  17. 17

    使用目标GL_TEXTURE_2D在纹理上渲染相机预览

  18. 18

    在Opengl ES 2.0中支持纹理格式GL_RGB_422_APPLE(每像素8位)吗?

  19. 19

    使用GL_POINTS时,gl_Position是否设置矩形的中心?

  20. 20

    Three.js使用framebuffer作为纹理

  21. 21

    使用Mapbox GL JS绘制半径为英里/米的圆

  22. 22

    内部格式指定为GL_RGBA的哪种数据类型?

  23. 23

    iOS 8 SDK中的GL_DRAW_FRAMEBUFFER_APPLE和GL_READ_FRAMEBUFFER_APPLE在哪里?

  24. 24

    iOS 8 SDK中的GL_DRAW_FRAMEBUFFER_APPLE和GL_READ_FRAMEBUFFER_APPLE在哪里?

  25. 25

    GL错误:尝试使用VBO渲染时内存不足

  26. 26

    GL错误:尝试使用VBO渲染时内存不足

  27. 27

    十进制数字值日期时间格式为4gl

  28. 28

    清除DRAW帧缓冲区仅在附加到GL_COLOR_ATTACHMENT0时才有效吗?

  29. 29

    取消绑定Open GL ES纹理的正确方法吗?

热门标签

归档