加速度計を使用する IOS ゲームがあります。私のゲームは 60 fps という良好な速度でレンダリングされますが、加速度計からの入力が遅れています。たとえば、ゲームを左に傾けた後、ゲームが応答するまでに 1 秒かかります。タッチ イベントでも同じことが起こり、遅延は約 1 秒の場合もあります。
私のゲームのレンダリング ループは次のようになります。
procedure RenderFrame
switch to "SpaceShips" texture
for each bad guy
update his location
render to OpenGLES
end loop
update good guy location
render him to OpenGLES
switch to "Particles" texture
for each particle
update the location
render to OpenGLES
end loop
end RenderFrame
私には、これは次の質問に似ています。
OpenGL ES 2.0 iPhone - バックグラウンド スレッド ブロックのメイン スレッドでのレンダリング
これは、メイン スレッドがブロックされているように聞こえますが、同時実行のメリットはありますか? メソッド全体を別のバックグラウンド スレッドに移動するだけで、メイン スレッドのブロックを削除できますか。それとも、同時実行を実現するために、上記のメソッドをより細かく書き直す必要がありますか? 可能であれば、メイン スレッドのブロックを緩和するために最小限の同時実行を実行したいと考えています。