Ipod Touch触摸和加速度计的延迟很大

时间:2011-06-23 20:29:04

标签: iphone ios opengl-es accelerometer ipod-touch

我正在为ios开发一款需要加速计和多点触控的opengl es游戏。 我有一个EAGLView,它使用ESRenderer进行绘图。

EAGLView实现加速度计并接收触摸:

@interface EAGLView : UIView <UIAccelerometerDelegate> { ...

touchesBegan,touchesMoved和touchesEnded也在这个班级。

由于跨平台原因,游戏的所有逻辑都分成几个c ++类,在drawView中我发送acc。游戏逻辑的值:

- (void)drawView:(id)sender
{
appAccelEvent(ax, ay, az);
if (sys_call == S_TOUCH_EVENT) {
    appTouchEvent(eventType, 0, cx0, cy0);
}
[renderer render];
}

我一直在使用版本为3.1.3的iphone作为测试设备,一切正常。但现在我正在使用版本4.2.1在ipod touch上进行测试,触摸和加速度计事件在游戏中响应的延迟太大,有时在1到2个segs之间。

我一直认为它可能是加速度计更新间隔的某种缓冲区,会降低渲染器的速度。还有什么可能导致这种滞后?我真的很感激任何修复它的建议。

1 个答案:

答案 0 :(得分:0)

您应该在iOS 4+上使用CMMotionManager,Apple会对其性能和准确性进行大量调整。在游戏循环中以轮询模式(定期调用-deviceMotion)使用它,它将比异步通知更高效,同样准确。