opengl-es - 如果我的场景包含少于 20 万个顶点,八叉树会提高性能吗?

标签 opengl-es opengl-es-2.0

我终于转向 OpenGL ES 2.0,并利用 VBO 将所有场景数据加载到显卡内存中。然而,我的场景只有大约 200,000 个顶点的大小(我知道这在某种程度上取决于硬件)但是有人认为八叉树在这种情况下有意义吗? (顺便说一下,因为大多数时候至少有 60% 的场景是可见的)很明显,我试图避免在我的 GLSL 编码生活的早期阶段实现八叉树!

最佳答案

如果您编写的应用程序仅用于学习目的,则无需担心优化和性能。但鉴于你的问题,显然你打算制作一个商业应用程序。

仅使用 VBO 不会解决您应用程序的性能问题,特别是正如您提到的,您打算在移动设备上运行它。 OpenGL ES 有一个优化的绘图选项,称为 GL_TRIANGLE_STRIP,对于复杂的几何图形尤其值得。

在提高性能方面也很有趣的是应用凹凸 mask ,对于模型中有纹理的情况。通过这两种方法,您的应用程序将得到显着改进。

当您提到您的整个风景始终可见时,您还应该使用细节级别 (LOD)。要实现几何 LOD,您需要为要使用的每个 LOD 使用不同的网格,并且每个级别的多边形比最接近的多边形要少。您可以为每个 LOD 制作几何体,也可以应用一些 3D 软件来自动制作。

有些工具是免费的,你可以访问和使用它直接对你的 GLSL ES 代码自动执行泛型优化,真的很值得 checking .

关于opengl-es - 如果我的场景包含少于 20 万个顶点,八叉树会提高性能吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20639465/

相关文章:

opengl-es - 是否可以在着色器代码中判断 OpenGL 版本是否为 OpenGL ES?

opengl-es - 检查对象是否可见

c# - Monotouch OpenGL 视网膜显示支持

iphone - 如何在 Core Graphics 中生成 RGBA 图像?

android - Android上OpenGL-ES如何绘制多条不同颜色的线段

ios - iPad Opengl ES 程序在模拟器上运行良好但在设备上运行不正常

iphone - OpenGL ES 2.0 和顶点缓冲区对象 (VBO)

android - 在 Android 应用程序中存储着色器代码的位置

OpenGL ES 片段着色器可以更改片段的深度值吗?

android - 将 OpenGL ES 2.0 渲染纹理转换为位图并返回