首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在OpenGL ES 1.1中优化大型模型的渲染?

如何在OpenGL ES 1.1中优化大型模型的渲染?
EN

Stack Overflow用户
提问于 2011-04-19 23:27:51
回答 1查看 5K关注 0票数 7

我刚刚在我的3D应用程序中实现了VBO,并且看到渲染速度大约提高了5-10倍。以前每秒1-2帧的渲染现在以每秒10-11帧的速度渲染。

我的问题是,是否可以进一步改进以提高渲染速度?三角形条带会有很大的不同吗?当前面之间不共享顶点,每个面的顶点是唯一但重叠的。

我的设备利用率是100%,Tiler利用率是100%,渲染器利用率是11%,资源字节数是114819072。这是在CAD模型上渲染912,120个面。

有什么建议吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-04-20 02:44:09

indicates that your bottleneck is in the size of the geometry being sent to the GPU利用率达到100%。在我的经验中,无论你做什么来缩小几何体的大小,都可以导致渲染时间的近似线性减少。这些调优步骤在过去对我很有效:

  • 如果你还没有,你可以考虑使用索引,这可能会通过消除一些冗余的顶点来减少几何体。iOS设备中的PowerVR GPU也针对使用索引几何进行了优化。
  • 尝试为顶点信息使用较小的数据类型。我发现我可以使用GLshort而不是GLfloat来处理顶点和法线,而不会在渲染时损失太多精度。这将显著压缩您的几何体,并导致渲染速度的良好提升。
  • Bin将类似颜色的顶点渲染为一组设置颜色的顶点,而不是提供每个顶点的颜色信息。这所需的少量额外绘制调用的开销将大大超过您不必发送所有颜色信息而获得的加速。我发现在我的一个较大的模型中使用optimization.
  • Don't可以减少大约18%的渲染时间。
  • 你已经在使用VBO了,所以你已经利用了VBO在任何时候停止渲染管道的好处。删除任何读取当前状态的内容,比如所有glGet*调用,因为它们确实会扰乱PowerVR GPU的流程。

你还可以做其他的事情来提高性能,比如在你的VBO中使用交错的顶点,法线,纹理数据,将你的数据对齐到4字节的边界,等等,但以上这些都是我发现对我自己的OpenGL ES 1.1应用程序调优影响最大的。

这些要点在苹果的OpenGL ES iOS编程指南的"Best Practices for Working with Vertex Data“部分都有很好的介绍。

票数 10
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5718846

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档