0

glRotated并且glTranslated当数字很大时不能正确执行例如下面的代码可以正确执行

xpos=1
zpos=1
glRotated(90, 1,0,0)
glRotated(360, 0,1,0)
glTranslated(-xpos,-ypos-2,-zpos)

但是这个不能正确执行

xpos=100000000
zpos=100000000
glRotated(90, 1,0,0)
glRotated(360, 0,1,0)
glTranslated(-xpos,-ypos-2,-zpos)

如果您使用第二个代码,您将得到一个不正确的图表。为什么?

4

1 回答 1

3

缺乏数值精度。大多数 GPU 在内部使用单点浮点数,除非您编写明确声明双精度的自定义着色器,否则使用固定函数管道,您的转换矩阵计算可能会被限制为 23 个有效位,这比订单少约 10 倍你的数字的数量级。(2^23 =~= 8·10^6)

于 2014-12-14T01:19:08.023 回答