【发布时间】:2014-10-18 05:42:41
【问题描述】:
硬件:iPad2 软件:OpenGL ES 2.0 C++
glDrawElements 似乎占用了大约 25% 的 cpu。使 CPU 18ms 和 GPU 10ms 每帧。
当我不使用索引缓冲区并使用 glDrawArrays 时,它会加速并且 glDrawArrays 大麦会显示在分析器上。其他一切都一样,glDrawArrays 有更多顶点,因为我必须在没有索引缓冲区的情况下复制 VBO 中的顶点。
到目前为止:
- 两种方法之间的状态变化量几乎相同
- 顶点结构是两个浮点数(8字节)。
- indexbuffer 是 16bit(也试过 32bit)
- 两个缓冲区的 GL_SATIC_DRAW
- 加载后缓冲区不会改变
- 相同的 VBO 和 indexbuffer 每帧渲染多次,具有不同的偏移量和大小
- 没有 opengl 错误
所以它看起来像是在做某种软件后备。但我不知道是什么导致 OpenGL 回退。
【问题讨论】:
标签: ios iphone ipad opengl-es opengl-es-2.0