gpt4 book ai didi

c++ - 纹理 Opengl 地形?

转载 作者:太空狗 更新时间:2023-10-29 20:28:55 29 4
gpt4 key购买 nike

在 OpenGL 中用四边形制作地形纹理的最佳方法是什么?我有大约 30 种不同的纹理我想为我的地形(每种地形类型 1 个纹理,所以 30 种地形类型)并且希望在任何两个地形之间平滑过渡。

我一直在浏览网页,发现有很多不同的方法,包括 3d 纹理、Alpha channel 、混合和使用着色器。但是,其中哪一个最有效并且可以处理我想要使用的纹理数量?例如:This popular answer描述了如何使用一些技术,但由于 mixmap 只有 4 个属性 (RGBA),因此只能支持 4 个纹理。

我还应该指出,我对着色器一无所知,因此非着色器所需的技术会更可取。

最佳答案

由于您链接到描述 texture splatting 的答案,并且它的问题提到了游戏 Oblivion,我可以提供一些额外的见解。

使用 RGBA 混合图的基本纹理散布仅支持每个地形四边形四个纹理,但您可以为不同的四边形使用不同的纹理集。 Oblivion 将其地形划分为每边 32 个网格点(192 英尺)的正方形(称为“单元格”),每个单元格定义了自己的一组四个地形纹理。所以你不能在一个小区域内有很多纹理多样性,但你可以很容易地在更大的区域改变你的纹理。如果愿意,您可以为更小的区域定义纹理集,甚至是单个四边形,但要以使用更多内存为代价。

如果一个四边形中确实需要四个以上的纹理,则可以使用多个混合贴图。对于每一个额外的纹理,您只需执行另一次纹理查找以获得另外四个混合因子,并在先前混合映射的结果之上再混合四个纹理。您可以根据需要放大到任意数量的纹理,同样以内存为代价。

纹理飞溅与 LOD 结合起来可能很棘手高度图上的技术,因为当一个低细节地形四边形代表一组高细节四边形时,您必须为大四边形的不同区域采样几个不同的混合图。 Oblivion 通过仅对全细节地形使用纹理飞溅来回避这个问题;以较低分辨率呈现的远处单元格使用由编辑器生成的预计算纹理,它会提前进行拼接和缩小。

关于c++ - 纹理 Opengl 地形?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11730759/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com