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



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

派生的mipmap数组的内部格式都与下面是levelbase数组和派生数组的维度符合3.8.14节中的要求。的内容派生数组的计算是通过重复的,过滤的减少levelbase数组。对于一维和二维数组纹理,每个层是独立过滤的。没有特定的过滤算法必需的,但建议使用框过滤器作为默认过滤器。

我明白,如果原始图像在sRGB中,则调用glGenerateMipMap的结果是sRGB,我对此没有问题。但是中间会发生什么呢?当然,我们不希望对对数尺度上的颜色取平均值。这是特定于实现的吗?

相关答案可以在OpenGL规范3.8.17节中找到:

3.8.17 sRGB纹理颜色转换

如果当前绑定的纹理的内部格式是SRGB,SRGB8,SRGB_ALPHA,SRGB8_ALPHA8, COMPRESSED_SRGB或COMPRESSED_SRGB_ALPHA,红色、绿色和蓝色组件从sRGB色彩空间转换为线性色彩空间作为3.8.113.8.12小节中描述的滤波的一部分。任何分量保持不变。理想情况下,实现应该执行此操作在过滤之前对每个样本进行颜色转换,但允许实现

Mipmap的生成将在第3.8.11节中描述,因此受制于色彩空间线性化。

最新更新