我在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中运行?
答案 0 :(得分:2)
在GPU上生成mipmap要求颜色格式既可过滤(创建缩减样本)又可渲染(用于写入输出图像)。 sRGB不保证是规范中的可渲染格式(GLES 3.2规范中的表8.10)。
您必须在CPU上生成mipmap并手动上传。