我们有一个基于Apple的GLCameraRipple示例的应用程序,可以对来自iOS设备的摄像头的视频进行实时图像处理。
Apple的仪器报告称OpenGL的运行速度为~30-40fps(每25-30 ms就有一帧)。假设以30fps的速度捕获和处理视频,这是有道理的。
但是,如果我们使用mach_absolute_time测量调用glkView:drawInRect之间的时间,则循环时间为50 ms(约为20 fps)。该速率几乎是Instruments报告速度的一半。
Apple的仪器错误(几乎100%(!)) - 或者是对glkView的定时调用:drawInRect错了吗?
Apple的Instruments似乎不准确,因为不是glkView:drawInRect在每个绘制周期都会调用吗?
我们发现others已注意到相同的差异,但没有明确答案,哪个实际上是正确的。
为什么会出现差异?如果Apple的仪器出错了 - 测量往返glkView的往返时间:drawInRect正确的方法来确定FPS吗?