2011-06-23 64 views
0

我正在爲需要加速計和多點觸控的ios開發一款opengl es遊戲。 我有一個EAGLView,它使用繪圖發生的ESRenderer。Ipod Touch觸摸和加速度計的巨大延遲

的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段之間。

我一直在想這可能是加速度計更新間隔緩衝渲染器的某種緩衝區。還有什麼可能導致這種滯後?我真的很感激任何解決它的建議。

回答

0

您應該在iOS 4+上使用CMMotionManager,Apple對性能和準確性進行了嚴格調整。在您的遊戲循環中以輪詢模式(定期調用-deviceMotion)使用它,它將比異步通知更具性能,並且同樣精確。