不同分辨率需要多个VBO / DL吗?

时间:2014-02-18 13:32:12

标签: java opengl graphics lwjgl

我有一个3D应用程序,我将地形渲染为高度图。地形离摄像机越远,分辨率就越低。除了为每个分辨率创建顶点缓冲区对象/显示列表之外,还有其他选择吗?还是有办法以最高分辨率获得一个,并以某种方式告诉GPU只使用一些数据?

2 个答案:

答案 0 :(得分:1)

您需要实现细节级别(LOD)算法。可以找到具有彩色图片的综合算法列表here。我建议将geomipmapping作为一个简单的起点。还有一些有趣的implementations,您可以重复使用或从中学习。

在大多数简单实现中,通常有几个用于不同细节级别的索引缓冲区和一个或多个用于地形不同部分的顶点缓冲区。除了tesselation着色器之外,GPU不能单独降低几何体的细节水平,细分着色器也用于使用顶点纹理进行地形渲染(然后地形数据在纹理中而不是在VBO中,粗糙度由不同的控制细分水平)。

答案 1 :(得分:0)

您必须使用本地位置坐标创建VBO。将此坐标发送到着色器并将变换应用于着色器上的世界坐标,并具有分辨率的特殊视图,您可以将其作为制服绑定到着色器。

最后一件事:“永远不要碰现有的VBO!”; - )