Answers:
好吧,食人魔已经实现了截锥体剔除(基本上不会画出从相机看不到的任何东西),但是我认为您的问题是另外一个问题。
您实际上不应该显示10000个块,通常是做什么的(或者至少是在少数基于Ogre3d的Minecraft中,例如我见过的克隆(我也正在制作其中的一个),而在原始版本中)正在创建网格(块的某些NxNxN区域),其中包含所示立方体的外表面。也就是说,当您并排放置2个多维数据集时,看不见这2个面,因此无需绘制。
这些面也应以如下方式绘制:http : //www.ogre3d.org/tikiwiki/tiki-index.php?page=DynamicGrowingBuffers,因为现代视频卡更喜欢一个100000多边形的网格而不是1000个100多边形的网格。
这个问题有两个方面。首先,您如何绘制10000块?您是否实际上将它们绘制为10000个单独的对象?如果是这样,几乎可以肯定这是您的瓶颈,而不是缺少咬合剔除。您应该将这些块分组为较少数量的网格(每个网格可能几千个),以减少绘制调用。
关于您的实际问题,脑海中浮现出三种遮挡剔除。
1)视锥面外的块。这意味着位于您或您身后两边的方块。食人魔已经通过视锥剔除删除了这些。
2)处于“地下”或完全被其他块包围的块,因此从任何角度都无法看到它们。您可以通过查看siz相邻块来识别它们。如果它们全部牢固,则您的块将被隐藏。GPU甚至永远也不会听说这些块-在构建代表表面的网格时应该跳过它们。
3)从表面上的某些块可以从水平面的某些位置看到,但当前被小山(或其他物体)隐藏。这是我尚未解决的最棘手的情况,但是很有可能在这种情况下可以使用硬件遮挡查询。
这是一个无耻的插件,但是我有一个相当成熟的库,有几个人正在使用它来开发Minecraft克隆,包括一些使用Ogre的克隆。定义体积的内容,它会生成曲面网格,然后可以对其进行渲染。这是主页:
以下是正在使用它的其他人的项目的视频:
如果您有10000个单独的对象,则瓶颈可能是基本数量,而不是顶点,多边形或填充。将对象烘焙到较少数量的较高多边形对象中以提高速度。
Minecraft有一个立方体块的概念,但目前无法找到参考。
这也是我使用各种技术绘制大量立方体的实验。还不包括烘焙。