gpt4 book ai didi

directx - 在 Minecraft 风格的地形中处理方 block (d3d/c++)

转载 作者:行者123 更新时间:2023-12-04 05:53:26 25 4
gpt4 key购买 nike

在由数千个立方体(即 Minecraft)组成的 3d 地形中,在位置和渲染方面处理每个块的方法是什么?更具体地说,我知道在 directX 9 中绘制立方体的基元并在任何地方变换它可能是一种荒谬的方法来实现这一点,因为存在如此多的性能问题,所以我想知道什么是更合理的方法。

每个立方体应该是一个被多次复制的网格,还是它们是一种从顶点缓冲区中的数据创建适当网格的方法?

我找到了 this article这介绍了实现我想要实现的内容背后的一些理论,但我以前从未使用过八叉树,所以我无法从源代码中获取太多内容。如果八叉树确实是要走的路,那么从哪里开始了解八叉树?我的大部分 google 搜索只出现了关于理论的博客文章,几乎没有或没有实现示例。

似乎使用体素在这方面很有用,但就像八叉树一样,我在这里没有经验,所以我真的不知道首先要学习什么。

无论如何,感谢您提供的任何建议\资源\书名。我确定这很明显,但我对 3d 编程还是很陌生,所以我很感激你的帮助。

最佳答案

首先,如果您使用 Minecraft 作为引用,请考虑它们对块的使用并将其与八叉树相关联。 Minecraft 将他们的世界分成更小的块来处理需要存储的大量信息,因此使用八叉树来组织将要存储的这些数据。 Goz 对八叉树和四叉树的工作原理有非常准确的描述,因此请使用他的信息作为引用。

另一件要考虑的事情是,您实际上并不想将每个立方体都绘制到屏幕上,因为这会消耗您的帧率。使用对象剔除仅将可见立方体绘制到屏幕上。再说一遍,如果你认为 Minecraft;你有没有遇到过一个小故障,你可以看穿方块和下面的世界?这是因为 Minecraft 只绘制最顶层的方块。屏幕上有这么多对象,使用相机视锥和遮挡查询来研究对象剔除将是一项值得的投资。

有关使用 DirectX 的信息,我会推荐 Frank Luna 的任何一本书。我自己拥有这本书,在 DirectX 中编程时它从未离开过我。 http://www.amazon.com/Introduction-Game-Programming-Direct-9-0c/dp/1598220160/ref=sr_1_3?ie=UTF8&qid=1332478780&sr=8-3
我强烈推荐这本书,因为我几乎从中学到了关于 DirectX 的所有知识。

在谷歌搜索时,我发现了这个讨论遮挡剔除的链接,因为 Luna 不包括遮挡剔除,只涉及视锥剔除。我听说 Programming Gems 系列提到了很多,但我不能亲自证明它的名字。 http://http.developer.nvidia.com/GPUGems/gpugems_ch29.html

希望这可以帮助。

关于directx - 在 Minecraft 风格的地形中处理方 block (d3d/c++),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9798588/

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