2011-07-06 96 views
2

有人可以请描述一种常用的技术,用于计算动态地改变每一帧的地形的纹理坐标吗?我在顶点着色器中实现了Perlin噪声函数,并且地形是逐帧动画的。地形非常像山(锯齿状,非常非常嘈杂)。我认为我可以在整个地形上线性地拍摄几张大纹理,并且基于高度在片段着色器中创建多纹理,但是这会使纹理在高空增益/丢失的地方伸展,对吗?我无法计算出如何计算顶点着色器中的纹理坐标,以便纹理在整个地形上都很漂亮,并且可以多细化为细节。我正在寻找有关OpenGL中的这种技术的指针。我可以使用glTexGen来做这种事吗?动态地形的纹理坐标 - OpenGL

回答

1

这样做没有“常用技术”,因为没有什么共同之处。你有需求,这是特定于你的用途。很难知道你想要什么,因为除了“在这个不断变化的地形上加上纹理之外,你自己似乎没有任何特别的目标。”

glTexGen不会帮助你,因为它只适用于每个顶点级别。如果你担心在重大变化的领域延伸,这将无济于事。

你应该尝试各种事情,看看什么给了可以接受的结果。使用着色器基于三角形的斜率来混合纹理(您必须找到一种方法来在片段着色器中计算该纹理,或使用几何着色器来获取它)以及任何特定像素的高度。这样,对于坡度较高的地区,您可以开始引入岩石质地或其他东西。

+0

我能够通过手动将片段着色器中的纹理混合在一起来实现我之后的精确多纹理效果。因为它是柏林噪音,所以斜坡从来没有如此戏剧化以至于不会出现纹理变化,所以我最初关心的问这个问题并不重要。我也会尝试基于坡度而不是高度的纹理建议来制作更加逼真的地形。谢谢! – Nitrex88