2011-06-23 15 views
0

私は加速度計とマルチタッチが必要なiOSのためのOpenGLのゲームを開発しています。 私はEAGLViewを持っていて、ESRendererを使って描画が行われます。iPod touchのタッチと加速度計の巨大な待ち時間

EAGLViewは、加速度計を実装し、タッチを受ける:

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

touchesBegan、touchesMovedとtouchesEndedは、このクラスでもあります。

ゲームのロジックは、クロスプラットフォームの理由からいくつかのC++クラスに分割されています。drawViewでは、

- (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を呼び出す)で使用すると、非同期通知よりもパフォーマンスが向上します。

関連する問題