glGenerateMipmap是否在线性空间中为sRGB纹理执行平均?

时间:2014-03-12 10:07:26

标签: opengl mipmaps srgb

OpenGL 3.3规范似乎没有要求mipmap生成在线性空间中完成。我能找到的是以下内容:

  

派生的mipmap数组的内部格式都与之匹配   levelbase数组,以及派生数组的维度如下   3.8.14节中描述的要求。的内容   派生数组是通过重复的,过滤的减少来计算的   levelbase数组。对于一维和二维数组纹理,每个   图层是独立过滤的。没有特定的过滤算法   虽然建议使用盒式过滤器作为默认过滤器。

据我所知,如果原始图像在sRGB中,调用glGenerateMipMap的结果是在sRGB中,我没有问题。但是中间会发生什么?当然,我们不希望平均对数刻度的颜色。这是特定于实现的吗?

1 个答案:

答案 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节中描述,因此受色彩空间线性化的影响。