6

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

派生的mipmap数组的内部格式都与levelbase数组的格式匹配,并且派生数组的维度遵循3.8.14节中描述的要求。派生数组的内容是通过对 levelbase 数组的重复过滤缩减来计算的。对于一维和二维阵列纹理,每一层都是独立过滤的。不需要特定的过滤器算法,但建议使用盒式过滤器作为默认过滤器。

我知道如果原始图像在 sRGB 中,调用 glGenerateMipMap 的结果是在 sRGB 中,我对此没有任何问题。但是中间会发生什么呢?当然,我们不想平均对数刻度上的颜色。那是特定于实现的吗?

4

1 回答 1

8

相关答案可以在 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。任何 alpha 分量都保持不变。理想情况下,实现应在过滤之前对每个样本执行此颜色转换,但允许实现

Mipmap 生成在第 3.8.11 节中进行了描述,因此受到颜色空间线性化的影响。

于 2014-03-12T13:07:15.277 回答