gpt4 book ai didi

c# - 3d 平铺地形

转载 作者:行者123 更新时间:2023-11-30 22:31:59 25 4
gpt4 key购买 nike

我正在尝试使用 XNA 在 3D 中创建平铺地形。我查看了有关如何操作的教程
(Riemers 和 Allens)。 Allens 教程有一个我想要达到的确切结果,
但是我不确定性能 - 似乎他正在使用单个四边形绘制
所有地形并使用像素着色器处理它,这意味着 - 整个地形将被
每一帧处理。
目前我正在为每个图 block 绘制一个四边形(Example)——它只允许绘制
可见图 block ,但这也意味着在每个
帧中需要处理更多的verticies和很多调用“DrawIndexedPrimitives”。
我做得对还是艾伦方式更快?有没有办法更好地处理平铺地形?
谢谢。

最佳答案

完全取决于您的地形复杂性和大小。通常,您的地形图 block 会包含多个四边形/图 block (例如,一个图 block 可能包含 4096 个三角形),然后置换顶点以获得您想要的地形。尽管如此,每个图 block 都将是一个索引图元,但单个绘制调用将产生大量三角形和更大面积的地形。进一步采用这个想法,您可以使远处的图 block 更大,这样您就不会获得太多细节(寻找基于四叉树/clipmap 的地形方法;您会得到类似这样的信息:http://twitpic.com/89y5kn。)

或者,如果您可以在顶点着色器中进行置换,则可以使用实例化来进一步减少绘制调用的数量。在每个实例中,您将 UV 坐标传递到您的高场和世界空间位置,然后您再次渲染高分辨率图 block ,但现在您可能会为整个地形完成一次绘制调用。

对于小型游戏,您可能只想生成几个高分辨率图 block (大约 65k 个三角形),然后截锥体剔除它们。这可以轻松地为您提供广阔的地形并且仍然易于管理;但这绝对不能很好地扩展 :) 取决于您的需求。

对于纹理图 block ,您还可以使用低分辨率索引纹理并按像素查找图集,或者仅将索引存储在顶点缓冲区中并对其进行插值(这很常见:每个像素存储 4 个权重顶点并使用它来查找四种不同的纹理。)

关于c# - 3d 平铺地形,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8954192/

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