我正在制作一个类似Minecraft的地形引擎,以学习一些OpenGL和3D知识,除了FPS我不太满意,其他都运行良好。
当前情况:我目前只绘制可见面并使用视锥剔除,方块位于16x16x32的方块块中(现阶段)。
我为每个块使用6个显示列表,一个用于每个面(左、右、前、后、上、下),这样不会逐个绘制方块,而是一次性绘制整个块的一个面。
使用这种方法,我可以获得约20-100fps的帧率,这并不好。分析表明,我向图形卡发送了约100k个顶点,并且一旦我看向天空,顶点数降至10k以下,我的帧率就达到了200+fps,所以我想这就是我的瓶颈。
我想做什么:由于少即是多,我找到了这个链接:http://ogre3d.org/forums/viewtopic.php?f=2&t=60381&p=405688#p404631
据我所了解,Kojack使用巨大平面的3D网格,并从2D纹理图集中绘制纹理到这些巨大平面的特定位置。他说他使用一个256x256x256的3D纹理和绿色和蓝色通道来映射到2D纹理图集。他的方法对于平面总计有一定数量的顶点,如果我的地图被应用,则有时是无用的,但仍然比我现在拥有的要少。 我的问题:我什么也没听懂:(,我想尝试他的方法,但我不明白他到底做了什么,主要是因为我缺乏对3D纹理的经验(我想象一个像素块)。他如何将纹理从纹理图集映射到平面的一部分,并使用某些3D纹理映射...
有人能解释一下Kojack做了什么或指向一些有帮助的地方吗,即使谷歌现在也没有任何帮助。