为什么我们在OpenGL和DirectX中没有较小的浮点类型?

时间:2015-04-04 10:15:19

标签: opengl graphics directx precision floating-point-precision

低于10位的浮点数有什么问题?为什么我们没有8位浮点数?我可以想象如果将glfloat用于颜色会如何影响结果,但我无法想象它如何影响顶点。当我们放大对象时会出现问题吗?

是的,gpu将这么多值视为32位值,甚至opengl redbook建议我们尽可能使用半浮点数,但我怎么知道我的精度下限?

1 个答案:

答案 0 :(得分:4)

  

为什么我们没有8位浮点数?我可以想象如果将glfloat用于颜色会如何影响结果,但我无法想象它如何影响顶点。当我们放大对象时会出现问题吗?

嗯,是的。鉴于即使是低分辨率显示器,这些天在一个方向上至少有1024个像素,您需要至少10位重要数字来准确表示屏幕上的位置。因此,假设整个转换链的执行没有精度损失(显然不是这种情况),这意味着原始数据中至少需要11位有效数字。

在浮点值中,尾数是,给出有效数字的是什么。在半精度浮点数(总共16位)中,尾数长度为11位,这是在屏幕空间中表示顶点所需的最小精度,而不需要在低分辨率屏幕上显示变换操作舍入伪像。

8位精度太低,无法用于任何事情。