OpenGL 中场景的比例是否重要?我的意思是,例如,绘制一个 1 单位的立方体,但将相机位置设置为 1000 像素,还是将相机设置为距离 0.1 单位的立方体 100 像素?我想,首先,我认为这会在视觉上产生相同的结果是否正确?如果是这样,有没有人知道两者都会如何影响性能,如果有的话?
我的预感是它不会有任何效果,但更明确的答案会很好。
除了使用浮点运算的不精确性之外,这无关紧要。所以尽量不要使用超小或超大的数字。
如果您的意思是 2D,这可能无关紧要。两种方式创建的图像可能看起来相同。
“设置相机”实际上只是改变了顶点相乘的变换矩阵,所以在应用变换之后,顶点位置是相同的。浮点值的不精确性可能会导致细微的差异。
如果相机具有恒定的近距和远距剪裁距离,则深度缓冲区中的结果值会有所不同,并且其中一个立方体可能会超出剪裁平面范围,这将使其看起来不同/根本没有。
你应该知道浮点数有两种模式:规范化和非规范化模式。对于低于 0 的值,您将拥有更多位和更高的精度。因此,最好将所有内容保持在 0 和 1 之间。
此外,看看 exp/mantissa 的工作原理,当一个位发生变化时,数字之间的差异会在您远离零时更大,而当您远离原点时,事情会开始弹出。
是的,这很重要。不是因为 OpenGL,而是因为浮点运算的性质——浮点精度会大幅下降。尝试标准化您的值,使您的值更接近于零。也就是说,不要仅仅因为你想要一个直径为 1,000 公里的行星而制造一个 1,000,000 单位宽的行星物体。