所以我有一个数字高程模型的点矩阵,比如说 1024x1024 网格,单元格间距为 1 个单位。
我不想在 C++ 中使用顶点缓冲区以最快的方式用 OpenGL 显示这个 DEM。由于我的数据集是碎片化的,因此在移动相机时我将不得不进行大量加载,因此这需要非常快。
显示这样的网格的最快方法是什么?我需要做某种三角测量还是有更快的方法来做?
所以我有一个数字高程模型的点矩阵,比如说 1024x1024 网格,单元格间距为 1 个单位。
我不想在 C++ 中使用顶点缓冲区以最快的方式用 OpenGL 显示这个 DEM。由于我的数据集是碎片化的,因此在移动相机时我将不得不进行大量加载,因此这需要非常快。
显示这样的网格的最快方法是什么?我需要做某种三角测量还是有更快的方法来做?
在 OpenGL 中正确,您必须先进行三角测量。如果您只想要一个简单的解决方案,您可以使用下图所示的方案。
您将每个数据点变成一个顶点。数据点的索引变为 x 和 y 坐标;高度值变为 z 坐标。
现在您必须创建一个顶点索引列表。第一个三角形的索引为 [0, 1, 1024],第二个三角形的索引为 [1024, 1, 1025],依此类推。您将数组绘制为GL_TRIANGLES
.
有更有效的方法来三角测量高度场,但除非你真的必须这样做,否则我不会去那里。
我的方法是使用均匀分布的 xz 坐标初始化 1024x1024 顶点缓冲区。高度可以在顶点着色器中通过每个补丁 1024x1024 像素高度纹理进行采样。顶点缓冲区可以为每个可见补丁重新渲染,提供不同的高度纹理和不同的 xz 坐标偏移。