在OpenGL中遮盖地形表面的区域

问题描述 投票:0回答:1

我正在使用3D地理渲染器,并在地形表面上构建了模型。这些建筑模型是通过摄影测量法捕获的,我们遇到的一个问题是,有时地形表面会戳穿建筑模型,因为表面数据和建筑模型并不完全匹配。

我们想掩盖建筑模型足迹所覆盖区域中的地形表面。我一直在考虑使用模板缓冲区,可能会从模型中挤出某种阴影体积,并在渲染模型之前在建筑物模型覆盖区所覆盖的区域中用较高的值填充z缓冲区。不过,这需要大量的处理,我希望有一种更智能,更有效的处理方式。另一个想法是制作一个从上方渲染的模型的正交2d纹理,并使用着色器以某种创造性的方式将其用于填充z缓冲区。

所以,如果有人以前做过类似的事情或有任何想法,我会很高兴听到他们的声音:-)

我仅限于OpenGL ES 3.0,因此无法使用几何着色器或其他精美功能。

干杯,托马斯

c++ 3d opengl-es terrain
1个回答
1
投票

您必须同时了解地形网格物体和建筑物实际在地形上的位置。最明显的解决办法是对地形网格进行预处理,以“展平”每栋建筑物基础周围的区域。这只需要执行一次,因此仅是一次性成本,而不是每帧成本。

无法想到任何立即显而易见的更整洁的方法-需要进行深度测试,除非您不想要它,否则实际上并不能很好地转化为算法;)

© www.soinside.com 2019 - 2024. All rights reserved.