iphone - 在 OpenGL ES 中,绘制一个大对象还是绘制多个小对象更快?

标签 iphone ios performance opengl-es

对于 iPhone 上的 OpenGL ES 3-D 游戏,以下哪个渲染速度更快:

  • 10 个物体有 100 个三角形
  • 一个对象有 1000 个三角形

最佳答案

您发出的每个 OpenGL ES 绘制调用都有一些开销,因此如果您使用 glDrawArrays()glDrawElements() 单独呈现 10 个对象,那么通常会比一个大物体慢。但是,我认为您会发现这些绘制调用的开销只是您在 iOS 设备上可能遇到的任何渲染速度变慢的一个小因素。

如果这十个对象是静态的,使用索引三角形将它们全部组合到一个数组中并在一次调用中绘制是非常容易的。正如 Waldheinz 指出的那样,我 article I wrote three years ago提倡使用顶点缓冲对象 (VBO) 来帮助在 GPU 上存储几何图形并避免在每一帧上进行昂贵的上传。这在我写它的时候并不像现在那么重要,因为更新的 iOS GPU 为 VBO 提供了硬件支持。

其他因素更有可能影响性能,例如这些对象是否使用透明度、它们上的照明的复杂性等。如有疑问,请遵循 Apple 的“Best Practices for Working with Vertex Data”,包含在他们的 OpenGL ES 编程指南中iOS,并使用 OpenGL ES 驱动程序和 OpenGL ES 分析器仪器分析您的应用程序。

关于iphone - 在 OpenGL ES 中,绘制一个大对象还是绘制多个小对象更快?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6151671/

相关文章:

iphone - iOS 中不使用私有(private) API 的异常(exception)情况?

java - 字符串与 Java 中的长性能

c# - 加快字符串连接速度

iphone - 在模拟器中第二次运行 ios 应用程序时登录

iphone - Ad Hoc 应该用于开发 iOS 设备吗?

ios - 在 iPhone 上,如何在从服务器加载时显示动画?

ios - 从 Swift 函数中的异步调用返回数据

iphone - tableview 删除部分中的最后一行

iphone - iOS 顶部横幅通知内容自定义

javascript - 如何重用 JQuery 事件?