OpenGL ES1.1.12 第二章 2.1.1

来源:互联网 发布:visio mac版 下载 编辑:程序博客网 时间:2024/06/10 07:46

(仅是草稿,未做整理)

2.1.1数值运算

GL运行的过程中必须执行许多的计算。Common prole的实现将要涉及到浮点计算,并且必须满足以下“Floating-PointComputation”所定义的范围和精度。Common prole lite的实现将要涉及到定点计算,并且必须满足“Fixed-PointComputation”所定义的范围和精度。但Common prole lite依然可以使用浮点运算。

浮点计算(Floating-Point Computation)

这里没有介绍如何表示浮点数,及它们如何计算。只是简单的要求浮点必须包含足够的bit数,及其指数足够大,使之能生成精度在1/10^5范围内唯一的结果。位置和正交坐标浮点数最大必须至少为2^32。颜色和纹理坐标幅度值必须至少2^10。其他的幅度值必须至少2^32

   x .0=0 . x =0

  1 .x = x .1=x

  x +0=0+ x = x

      0^0 =1

后续将进一步说明浮点数的要求。大部分单精度的浮点都满足这些要求。

需要浮点数据的GL命令的输入来说,任何表示浮点的数值都都是合法的。而对于这样的GL命令,如果输入不是浮点数据,那么其结果是未定义的,但必须不能引起GL中断或终止。如,在IEEE算法中,一个负0值或者十进制值用在GL命令中,其结果是可预知的,如果是一个NaN值或无穷大的数值,那么结果也是未定义的。如果x值不是浮点值,那么以上定义的等式将不成立。

定点计算(Fixed-PointComputation)

内部计算中可以用定点或浮点算法。定点运算的精度必须在(+-)2 ^-15之间。用于表示位置和正交坐标的定点值的最大值必须至少2^15。颜色和纹理坐标幅度值必须至少2^10。其他的幅度值必须至少2^15

  x .0=0 . x =0

  1 .x = x .1=x

  x +0=0+ x = x

      0^0 =1

定点计算可能会导致数值溢出(上溢下溢)。这样的结果是未定义的,但必须不能引起GL中断或终止。

总的要求

不管是用定点计算还是浮点计算,下面的约束是所有GL实现必须满足。

16.16注释表明,一个32-bit的定点二进制补码拥有16bit的部分。如果一个顶点用16.16表示,那么模型视图和投影矩阵也可用16.16表示。眼睛空间和NDC空间的顶点结果用16.16表示(见2.10部分),即用有限的动态范围立即数来计算,那么转换流水必须计算眼空间和NDC空间顶点,必须达到一定的精度。如溢出是不可接受的。

在需要除法计算的情况下,包括向量归一化中要需求的隐式除法,除0计算的结果是未定义的,但必须不能引起GL中断或终止。


原创粉丝点击