我正在尝试编写一个小的体素引擎,因为它很有趣,但是却很难找到存储实际体素的最佳方法。我知道我将需要某种类型的块,因此我不需要在内存中拥有整个世界,而且我知道我需要以合理的性能渲染它们。
我了解了八叉树,据我所知,它以1个多维数据集开头,在那个多维数据集中可以再有8个多维数据集,在所有这8个多维数据集中可以是另外8个多维数据集,等等。但是我认为这不适合我的体素引擎,因为我的体素多维数据集/项目都将完全相同。
因此,另一种选择是只创建一个大小为16 * 16 * 16的数组,并将其作为一个大块,然后用项目填充它。没有零件的零件的值将为0(0 =空)。但是,这恐怕会浪费大量内存,而且速度不会很快。
然后另一个选择是每个块的向量,并用多维数据集填充它。多维数据集在块中保持其位置。这样可以节省内存(没有空气障碍),但是在特定位置查找多维数据集要慢得多。
所以我真的找不到一个好的解决方案,我希望有人可以帮助我。那么,您将使用什么?为什么?
但是另一个问题是渲染。使用OpenGL读取每个块并将其发送到GPU很容易,但是非常慢。每块生成一个网格会更好,但是这意味着每次我打破一个块时,我都必须重建整个块,这可能会花费一些时间,导致轻微但明显的打ic,我显然也不想这样做。因此,这将更加困难。那么我该如何渲染立方体呢?只需在每个块的一个顶点缓冲区中创建所有多维数据集,然后渲染该多维数据集,然后尝试将其放入另一个线程中,或者有其他方法吗?
谢谢!