SDK GLES10を使用してAndroidゲームを開発していますが、Samsung Galaxy Aceのような優れた携帯電話ではパフォーマンスに関する問題が発生しています。だから、私はNDKに移植することを考えていましたし、少なくともCPU時間が最も長いレンダリング部分であるGLES20を使うようにすることもできます。Android SDK GLES 1.0からNDK GLES 2.0にゲームを移植しますか?
は(ギャラクシーS2にそれは90と20 FPSの間で変化する銀河エースに、一定の61 FPSで実行され、ほとんどの時間吃音される)の両方ギャラクシーS2とギャラクシーに
最もCPU時間consumnig方法をエースはGLES10.glDrawElements()
,GLES10.glVertexPointer()
,GLES10.TexCoordPointer()
です。 Aceで使用されたCPU時間の85%、S2で82%のようになります。
パフォーマンスが大幅に向上しますか1.レンダリングにNDKを使用し、2. GLES20に移植しますか?
おそらく、遅い理由を調べるためにコードを最初にプロファイリングする必要があります。また、GLES1からGLES2に変更しても、自動的にパフォーマンスが向上することはありません。 GLES2と同じことをGLES1と同じにすると、perfは同じになります。 – Tim
私はすでにこれを行っていますが、レンダリングは私の質問でも述べたようにボトルネックです...そして、GLES20でも同じことをすることはできません.GLES20のコードとはGLES10のコードとはかなり異なっています –
コード行あなたは独自のシェーダを書く必要がありますが、シェーダが固定機能パイプラインの機能をエミュレートするだけであれば、GPUが行っている作業は同じように出てくるでしょうし、 GLES2に準拠したGPUでGLES1コードを実行すると、おそらくすでに裏でシェーダが使用されている可能性があります。 – Tim