为什么不存在GL_RGB32,GL_RGBA32?

时间:2012-08-03 11:41:45

标签: opengl

相关阅读:http://www.opengl.org/wiki/Image_Format#Color_formats

规范化纹理格式(例如,GL_RGB8_SNORM和GL_RGB16)存储映射到浮点范围的整数( - [1.0,1.0]用于有符号规范化,[0.0,1.0]用于无符号规范化)。

在我看来,有一个很好的理由有GL_RGB32,GL_RGBA_SNORM等令牌:精度将超过专用浮点格式,如GL_RGB32F。另外,为了完整性:为什么有8位和16位的标准化格式,但不是32?

那么,为什么不存在GL_RGB32,GL_RGBA32?

1 个答案:

答案 0 :(得分:0)

  

在我看来,有一个很好的理由有GL_RGB32,GL_RGBA_SNORM等令牌:精度将超过专用浮点格式,如GL_RGB32F。

你刚回答了自己的问题。他们不允许它,因为允许它意味着在转换为单精度浮点数时丢弃8位额外的精度,或者将这些32位标准化整数转换为双精度浮点数。

你会发现即使GL 4.2也不允许双精度浮动纹理。

这是不允许的,因为它在当前的硬件上根本没用。当前的硬件不支持它,因为支持它意味着从纹理中获取双精度值。