我正在研究基于体素的游戏引擎,其中我需要有块。我试图从我的世界中读取一个Chunk类,但我无法理解它。 我用的意思是:16x16x256块数组
所以我的问题是:块如何工作以及它如何存储数据?
答案 0 :(得分:1)
那么,那就违背了一些几何结构。如果这是一个Micraft-esque游戏,那么一个块要么被填充,要么它是无效的。你想要那些块是不同的类型,或只是“那里”或“不存在”。我用的意思是:16x16x256块数组
让我们说,为了简单起见,您希望块具有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];
}
你还需要一些功能来遍历这个结构,但我会把研究留给你,作为一个学习实验。我给了你很多关键词来搜索互联网。
}