私は今から約4か月間C ++で趣味としてプログラミングをしてきましたが、ボクセルを使ってものを作成するのが大好きでした。私はMinecraftのような世界をレンダリングする「ゲーム」(私は実際には地形のみを行い、ゲームプレイではないので、単なる個人的な挑戦の詳細)を書きましたが、最近、ゲーム/チャレンジ/などを書き込もうと考えていますマーチングキューブやデュアルコンターリングなどのアルゴリズムを使用し、ボクセルサイズを縮小します。Minecraftのようなプロジェクトを書いたとき、各チャンクのデータを符号なしshortの多次元配列に格納しました(したがって、最大65536の異なるブロックタイプが得られます)。さらに、レンダリングのために、1つのポイント(GLubyteとして)ともう1つのGLubyteだけを保存して、6つのポイントのうちどれが表されているポイントに面しているかを示しました。次に、ジオメトリシェーダーを使用して顔をレンダリングしました。
私が考えていた新しいプロジェクトで、頭を包むことができないのは、ボクセルが約1cmサイズのボクセルと比べて約5cmまたは10cmになるのに十分なボクセルデータをどのように保存できるかです。ブロックの704x704x704領域をレンダリングしたとき、私の古いプロジェクトは約670MBのRAMを使用していました。ボクセルサイズを10cmに縮小し、同じレンダリング距離を維持すると、ボクセルデータは約649GBになります(ボクセルごとに2バイトと7040 ^ 3ボクセルの領域を想定)。ボクセルデータをより効率的な方法で保存できる方法はありますか?