OpenGL otrhographic投影变焦和浮动精度

时间:2018-03-12 10:35:45

标签: c++ opengl-es precision glm-math

我正在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替换变量无济于事。

0 个答案:

没有答案