OpenGL 3.3规范似乎没有要求mipmap生成在线性空间中完成。我能找到的是以下内容:
派生的mipmap数组的内部格式都与之匹配 levelbase数组,以及派生数组的维度如下 3.8.14节中描述的要求。的内容 派生数组是通过重复的,过滤的减少来计算的 levelbase数组。对于一维和二维数组纹理,每个 图层是独立过滤的。没有特定的过滤算法 虽然建议使用盒式过滤器作为默认过滤器。
据我所知,如果原始图像在sRGB中,调用glGenerateMipMap的结果是在sRGB中,我没有问题。但是中间会发生什么?当然,我们不希望平均对数刻度的颜色。这是特定于实现的吗?
答案 0 :(得分:7)
相关答案可以在OpenGL规范第3.8.17节中找到:
3.8.17 sRGB纹理颜色转换
如果当前绑定纹理的内部格式是SRGB,SRGB8,SRGB_ALPHA之一, SRGB8_ALPHA8,COMPRESSED_SRGB或COMPRESSED_SRGB_ALPHA, 红色,绿色和蓝色组件从sRGB颜色空间转换为 3.8.11 和 3.8.12 部分中描述的线性颜色空间作为过滤的一部分。任何 alpha分量保持不变。理想情况下,实现应该执行此操作 在过滤之前对每个样本进行颜色转换,但允许实现
Mipmap生成在3.8.11节中描述,因此受色彩空间线性化的影响。