【问题标题】:glGenerateMipmap with GL_SRGB8 in OpenGL ES 3 results in black textureOpenGL ES 3 中带有 GL_SRGB8 的 glGenerateMipmap 导致黑色纹理
【发布时间】:2017-05-14 18:18:09
【问题描述】:

我在 Android 上使用 OpenGL ES 3,我正在尝试加载 sRGB 纹理并为其生成 mipmap。我使用 GL_SRGB8 作为内部格式,使用 glGenerateMipmap(GL_TEXTURE_2D) 生成 mipmap,并使用 GL_LINEAR_MIPMAP_LINEAR。当我尝试使用它时,它会绘制黑色纹理。

如果我改用 GL_RGB8,它可以工作。如果我不尝试使用 mipmap,则 GL_SRGB8 有效。我还在桌面 OpenGL 上运行了相同的代码,它也可以工作。有没有办法让它在 OpenGL ES 中工作?

【问题讨论】:

    标签: android opengl-es mipmaps srgb


    【解决方案1】:

    在 GPU 上生成 mipmap 要求颜色格式既可过滤(以创建下采样)又可渲染(以写入输出图像)。 sRGB 不保证是规范中的可渲染格式(GLES 3.2 规范中的表 8.10)。

    您必须在 CPU 上生成 mipmap 并手动上传。

    【讨论】:

      猜你喜欢
      • 2014-11-29
      • 1970-01-01
      • 2014-08-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-07-14
      相关资源
      最近更新 更多