0

我在 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 中工作?

4

1 回答 1

2

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

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

于 2017-05-15T09:37:53.327 回答