存储5位整数作为16位浮点数的影响

时间:2014-12-16 16:22:43

标签: c opengl floating-point-precision unsigned-integer

我正在处理一些可能具有大量值的数据,而数据本身很重要。

看到的最高数字是“89,482”。所以最初我打算使用unsigned int。

然而,在usigned int格式中使用这些数字会引起一些麻烦,即在OpenGL着色器中操作它们。

基本上,如果我可以使用浮点数,事情会简单得多。

但是我并不完全理解将这样的数字存储为浮点数的影响。特别是在OpenGL情况下,我没有选择存储单通道32位浮点纹理,只有16位。

对于16bit浮动维基百科州:

  

整数值的精度限制
      0到2048之间的整数可以精确表示       2049年到4096年之间的整数轮到2的倍数(偶数)
      4097和8192之间的整数轮到4的倍数       8193和16384之间的整数轮到8的倍数       16385和32768之间的整数舍入为16的倍数       32769和65519之间的整数舍入为32的倍数       等于或大于65520的整数四舍五入为“无穷大”。

所以这简单地意味着在数字“89,482”的情况下,试图将它存储在16位OpenGL纹理中它将被舍入到无穷大?如果是这样,我的选择是什么?坚持使用unsigned int?那么当我需要将它标准化时,我可以投射浮动吗?

- EDIT ---

我需要在着色器中取消标准化值

0 个答案:

没有答案