iOS から Android にゲームを移植しています。ほとんどの場合、問題なく動作しています。私はほとんどの場合、NDK / JNI を使用した C/C++ コードと、アプリのライフサイクルを管理し、タッチと加速度計の情報をゲームに送信するための小さな Java を使用しています。
私が知る限り、メインの UI スレッドと、GLSurfaceView によって作成され、表示や OpenGL バックバッファの反転などを処理する 2 つのスレッドがあります。
したがって、タッチを除いて、すべてがうまく機能しています。私が自分のデバイスで試した他のアプリと比べて、動作が遅く、反応が鈍いように感じます。いくつかの調査を行った後、問題はスレッドの使用方法に関連している可能性があると考えています。具体的には、表示スレッドが機能した後にスリープ状態にならないことに関連している可能性があるため、メインの UI スレッドで問題が発生している可能性があります。それはもっともらしく聞こえますか?
GLSurfaceView ディスプレイ スレッドがスリープ状態になるまでに必要なミリ秒数を計算してから、sleep() を実行すると、タッチが改善されますが、アニメーションはデバイスで一定の 60FPS ではなくなりました。私の疑いは、前のフレームでスリープするミリ秒数を計算し、その数値を使用して現在のフレームでスリープしているということです。
それとも、まったく違うものになるのでしょうか?知らない。私はまだAndroidに非常に慣れていません...
誰かがこの問題に光を当てるか、正しい方向に向けてくれることを願っています.
ありがとう、