我正在GLES中处理基于图块的渲染应用程序。它的工作方式类似于基于图块的地图(OSM等)。随着用户放大,显示越来越小的图块。对于投影,我设置了一个正交矩阵(使用glm库),如下所示:
BASE
你可以看到参数是viewCenter(它没有改变,它是屏幕分辨率的一半)和比例,它随用户放大或缩小而变化。所有数字均为DERIVED
类型。
我将此投影与平移和模型矩阵相乘以得到最终的MVP,传递给GLSL。我看到的问题是,当场景放大很多时(scale_> 200000),我可以看到移动停止平滑,形状开始略微抖动。
以下是模型矩阵的示例:
auto projMatrix = glm::ortho(-viewCenter_.x / scale_,
viewCenter_.x / scale_,
viewCenter_.y / scale_,
-viewCenter_.y / scale_,
-1.0f, 1.0f);
我猜这是由于浮点精度,买我不知道如何解决它。我认为用double替换变量无济于事。