我最终转向OpenGL ES 2.0,并利用VBO将所有场景数据加载到显卡内存中。然而,我的场景只有大约200,000个顶点(我知道它在某种程度上取决于硬件)但是有人认为八叉树在这个例子中会有任何意义吗? (顺便说一下,由于观点,大部分时间内至少有60%的场景是可见的)显然,我试图避免在我的GLSL编码生命的早期阶段实施八叉树!
答案 0 :(得分:4)
如果您编码的应用程序仅用于学习目的,则无需担心优化和性能。但鉴于你的问题,显然你打算制作一个商业应用程序。
只有使用VBO才能解决App的性能问题,特别是当您提到它意味着它要在移动设备上运行时。 OpenGL ES有一个优化的绘图选项,名为GL_TRIANGLE_STRIP,特别适用于复杂的几何体。
在提高性能方面的另一个好处是应用Bump Masking,因为你的模型中有纹理。通过这两种方法,您的App将得到显着改善。
正如您所提到的,您的整个风景始终可见,您还应该使用详细程度(LOD)。要实现几何LOD,您需要为要使用的每个LOD使用不同的网格,并且每个级别的多边形都比最近的多边形少。您可以自己制作每个LOD的几何体,也可以应用一些3D软件自动生成它。
某些工具是免费的,您可以访问并使用它直接在您的GLSL ES代码上自动执行通用优化,这非常值checking。