我在基于体素的游戏引擎上工作,其中我需要有块。我试着阅读“我的世界”中的一个分块类,但我无法理解它。我的意思是: 16x16x256块数组
所以我的问题是:块是如何工作的,它是如何存储数据的?
发布于 2012-03-31 20:15:13
区块的
我的意思是: 16x16x256数据块数组
好吧,那就违背了一些几何结构。如果这是一个Micraft风格的游戏,那么一个块要么被填满,要么它是空的。您是否希望这些块是不同类型的,或者只是“那里”或“不在那里”。
为了简单起见,我们假设您希望为一个块设置2^CHAR_BIT不同的状态(在大多数系统上,CHAR_BIT是8)。状态0表示无效。因此您可以将这些块存储在结构的数组中
char chunk[16][16][256];您可以将其封装在一个类中。
class Chunk
{
private:
    char chunk[16][16][256];
}当然,您的世界由多个块组成,您可能会将这些块排列在一个网格中,其中每个网格单元占用一个块
class ChunkGrid
{
private:
    std::list<Chunk> chunks;当然,您还希望以空间细分结构组织这些块,这样您就可以根据它们在世界上的位置快速索引块,八叉树可以很好地实现这一点
    class ChunkOctree
    {
    private:
        union Fork
        {
            ChunkOctree *branch;
            Chunk *leaf;
        };
        Fork forking[2][2][2];
    }您还需要一些函数来遍历此结构,但我将把研究留给您,作为一个学习实验。我已经给了你足够的关键字来搜索互联网。
}https://stackoverflow.com/questions/9955626
复制相似问题