对于 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/