1

在 iO6/iPad3 上渲染大型模型(大约 130K 顶点)时,我得到了一些令人惊讶的结果。

以下是背景资料:

  1. 130k verts,非交错(我知道不好),分 5 批使用 glDrawElements 绘制
  2. 顶点是位置(3 个浮点数)、正常(3 个字节)、颜色(4 个字节),在 GL_STATIC_DRAW VBO 中。
  3. 顶点状态在帧开始时使用 VAO 设置。
  4. glClear 在帧开始时调用。
  5. 应用程序正在使用 GLKViewController 来处理 GL 框架。

结果,Xcode profile view 报告:

  1. 大约 3 帧/秒。
  2. GPU 利用率约为 7%。Tiler 为 2%,Renderer 为 5%。
  3. CPU 时间是每帧 360 毫秒,GPU 是 25。Youch!

使用仪器进行的进一步分析报告了一个名为 glRunVertexSubmitARM(从 glDrawElements 调用)的内部 GL 函数将花费大部分时间。这里发生了什么?我的输入数据是否如此糟糕以至于 GL 每一帧都花时间将其转换成一个不错的格式?

4

1 回答 1

3

这正是正在发生的事情。确保所有顶点属性都从 4 字节边界开始(在法线中添加一个填充字节)。

于 2013-02-07T01:32:11.110 回答