glFlush()时间因帧而异,iPhone上的内容相同

时间:2011-02-28 20:07:10

标签: iphone opengl-es

此问题与presentRenderbuffer : GL_RENDERBUFFER_OES takes long time

有关

我有一个简单的2D游戏(有几个精灵)。 glFlush()执行时间从1ms到30ms不等,帧内容相同。你知道为什么吗?我确信在计算时我没有将帧内容从一帧更改为另一帧,它是一个具有大约30个精灵的静态场景。我使用~5MB纹理内存,并为纹理加载分配额外的4MB。我在一个线程上使用opengles 1.1。我有其他的步骤,但他们没有使用opengl。此行为适用于iOS 3G的iPhone 3G

1 个答案:

答案 0 :(得分:0)

我在我的iPad(第3代)上尝试了这个,当你为iPad编译时,glFlush()对于少量几何(2个三角形)采用0.5ms,对于更多几何采用15ms(2 tris + 100点) 。大部分时间都在等待displaylink回调。但是当您编译 iPhone 时,glFlush()至少花费15毫秒,这就是花费大部分游戏时间的地方(如果你有一个相对空的帧!)。如果你进入2x模式(应用程序在iPhone模式下运行,在iPad上运行),glFlush在每一帧上完成交替所需的时间:15ms,30ms,15ms,30ms。我猜iPhone的架构与iPad的架构不同,iPhone上的glFlush()命令中有一些帧限制器(请记住,我只在我的iPad上试用过iPHone模式)。 p>