我正在制作一个类似于Minecraft的地形引擎来学习一些 OpenGL 和 3D,除了我不满意的 FPS 之外,一切都运行良好。
当前:我目前只绘制可见面并使用平截头体剔除,立方体为 16 x 16 x 32 立方体块(目前)。
我每个块使用 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 纹理贴图......
任何人都可以解释Kojack做了什么或指向一些有用的地方,即使谷歌现在也没有任何帮助。