【发布时间】:2013-03-25 20:22:30
【问题描述】:
我正在使用带有 VBO 和索引等的现代 OpenGL。
首先我从高度图加载地形,然后将其划分为块(在我的情况下为 128x128) 我将所有顶点加载到 VBO(对于每个地形块) 然后我有 4 个 LOD 级别 - 索引表 - 它非常静态。
渲染时我只是根据与相机的距离来选择块
if(distance > 768.0)
glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, cells[i].elementbuffer_lod4);
else if(distance > 512.0)
glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, cells[i].elementbuffer_lod3);
else if(distance > 128.0)
glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, cells[i].elementbuffer_lod2);
else
glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, cells[i].elementbuffer_lod1);
在这里我遇到了一个问题。一切正常,但我在不同的 lod 级别块之间有非常难看的裂缝。我在谷歌搜索时发现了这样的 pdf:http://www.flipcode.com/archives/article_geomipmaps.pdf,我理解这个想法,但我真的不知道如何使用 VBO(上图)来实现它。我很乐意听到一些想法。
【问题讨论】:
-
最简单的解决方案可能只是从下一个块向南复制北行顶点(以及其他方向),并确保它们在 NS/EW 轴上对齐。您不会丢失任何数据,只需将边界顶点复制到相邻块中,以便它们必须对齐。
-
另一个简单的解决方案是在有接缝的地方渲染两个 LOD。