我怎样才能有效地存储顶点数据在C#/ XNA?

我正在创建一个使用体素的地形系统,​​它有点像“我的世界”风格,我想知道是否有任何事情可以做,以增加我能够存储的顶点的数量(并因此渲染)。

根据我读过的不同的建议,我创建了大小为32x32x32的多个“块”,并且这些多维数据集的所有顶点都被预先计算并存储在一个VertexBuffer中。 然后我有7x7x7这些创建一个更大的地图。 因此,这是大约1100万立方米。

我无法渲染所有1100万个立方体,所以我删除了缓冲区中的任何顶点,这些顶点将被相邻的块完全隐藏(这会去除所有内部/不可见的曲面/顶点)。 总的来说,在我使用的简化地形示例中,这将顶点数量减less了36倍!

但是,这似乎是我可以渲染块的数量的绝对限制。 根据任务管理器,这已经占用了大约1GB的内存(尽管顶点本身接近一半–GC和全部)。

我是否必须简化我的地形和/或接受这个限制,还是有更好的方法来做到这一点? 我以前尝试过使用实例化,但是只有20,000个立方体左右后才放慢速度。

谢谢。