例如,我可以将我绘制实体的位置与屏幕相关联,然后再将它们发送到OpenGL - 或者:我给OpenGL提供相对于游戏世界的直接坐标,当然这些坐标的范围要大得多.
没有速度问题,但您会发现准确性问题,因为数字之间的差异与数字的大小相比会非常小.
例如,如果模型的中心位于(0,0,0)10 x 10 x 10,那么模型两侧的两个点位于(-5,-5,-5)和(5,5,5).如果相同的模型居中,(1000,1000,1000)那么你的积分是(995,995,995)和(1005,1005,1005).
虽然绝对差值相同,但相对于坐标的差异不是.
这可能导致舍入错误和显示伪像.
您应该排列模型的坐标,以便模型的中心位于(0,0,0).
较大值的速度将与相同数据类型的较小值相同.但是如果你想要超过正常的32位精度并启用类似GL_EXT_vertex_attrib_64bit的东西,那么可能会有性能损失.
允许使用较大的值,但除标准浮点精度问题外,需要注意的另一件事是深度缓冲区的精度.
深度精度是非线性分布的.因此,对于遥远的事物来说,它更精确地靠近并且不那么精确.因此,如果您希望能够为顶点坐标使用各种值,请注意,如果您打算将非常大的物体渲染到相机附近非常小的物体,您可能会看到z-fighting伪像.将近和远剪裁平面设置为尽可能接近实际场景范围将有所帮助,但可能不足以解决问题.有关详细信息,请参阅http://www.opengl.org/resources/faq/technical/depthbuffer.htm,特别是最后两点.
此外,我知道您询问了顶点位置,但纹理坐标可能具有超出正常浮点规则的额外精度限制.指定纹理坐标(9999999.5,9999999.5)并期望它正确包装到(0..1,0..1)范围可能无法正常工作(取决于实现/硬件).