3

現在、Android プラットフォームでのゲームに必要なすべての機能をテストしています。hello-gl2 サンプル コードのみを変更し、いくつかのテクスチャ、VBO、FBO、および単純なシェーダーを 2 つのレンダリング パスに追加しました。

問題は、画面に触れずにアプリを実行すると、約 35 ~ 45 fps になることです。しかし、連続して画面に触れ始めると、レンダリングが遅くなり始めます! 入力とレンダリングが同じスレッドにあるため、これは問題なのでしょうか (あると思いますか?)、修正することはできますか? そのラグを修正できない場合、私のゲームはプレイできるほど十分に動作しない可能性があります。(いくつかの重いレンダリング要素があります)

//前もって感謝します!

4

1 に答える 1

1

私はAndroid開発にかなり慣れていませんが、タッチハンドラーも非常に遅いことがわかりました。デフォルトのサンプルでは、​​オブジェクトを新規作成し、これをかなり頻繁に行っています。これは、ガベージ コレクターを怒らせることになります。「Thread.sleep(10);」を呼び出すことで、遅延の少ない方法で実行することができました。run 関数内。

「新しいRunnable」をオブジェクトの循環バッファに置き換えるとパフォーマンスが向上すると思いますが、まだ調査していません。私は、タッチ イベントが別のスレッドで発生しているようであり、これが問題を引き起こす可能性があります。

Override public boolean onTouchEvent(final MotionEvent event)
    {
        queueEvent(


        new Runnable()
        {
            public void run()
            {

                int action = event.getAction();
                //do your handling here
                try
                {
                    Thread.sleep(10);
                } catch (InterruptedException e)
                {

                    e.printStackTrace();
                } 

            }
        });
        return true;
    }
于 2011-03-08T19:51:20.473 に答える