何百万もの最新のAndroidアプリ、ゲーム、音楽、映画、テレビ、本、雑誌などをお楽しみください。いつでも、どこでも、デバイス全体。
このアプリは、開発者、またはOpenGLとCanvasのパフォーマンスの違いに興味がある人を対象としています。具体的には、JavaとCのハイブリッドでOpenGL ES 2.0を使用して、2Dスプライトの描画のパフォーマンスを測定し、Javaでキャンバスを使用して2Dスプライトを描画します。
テストの実行が完了したら、デバイスのバックボタンを押してパフォーマンスのベンチマーク分析を確認できます。
Chris PruettによるSpriteメソッドテストに似ていますが、OpenGL ES 2.0のために更新されています。彼のSpriteメソッドテストは、時代遅れのES 1.0を実行し、ゼリービーンで壊れています(トリップルバッファリングのため)。
このアプリは、OpenGL ES 2.0をサポートするすべてのデバイスで動作します。
これは広告なしで、しなやかなものです。
詳細:
具体的には、このアプリは、JavaとCのハイブリッドを使用してOpenGL ES 2.0を使用して、2Dスプライトの描画のパフォーマンスを測定し、Javaでキャンバスを使用して2Dスプライトを描画します。
すべてのフレームで:
背景の色はわずかにシフトし、赤と白の間を脈動します。
各スプライトは、ランダムな(ガウス)量を移動します。スプライトの中心が画面の端を越えた場合、スプライトはランダムな画面の位置に移動します。
Canvasテストでは、SurfaceViewとCanvas.drawbitmap()を使用します。すべての計算はJavaで行われます(andextgaussian()and random.nextfloat()をFloat []で使用します。
OpenGL ES 2.0テストでは、JavaでGlsurfaceViewを使用しています。計算は、c(drand48()を使用して、javaのガウスアルゴリズムに相当するインラインCを使用して)で行われます[]。描画は、gldrawarrays(gl_points、...)を使用してCでも行われます。 C(NDK)メソッドは、JAVAからJNIを介したすべてのフレームと呼ばれます。
すべてのテストには、Javaでのプロファイリング操作の同じオーバーヘッドがあります。
統計:
FPS情報は、フレームが実際に画面に投稿される場合(技術的にはSurfaceFlinger)に関するものです。
描画情報は、描画コマンドを発行する(およびglflush() + glfinish())を発行するのにかかる時間に関するものです。実際に画面バッファをフリップする時間を数えません。
プッシュ情報(VBOのみ)は、頂点データをGPUバッファーにプッシュするのにかかる時間です。これは、多くの場合、フレームあたり<.5ms(0.000秒に丸)になります。非VBO OpenGLテストを使用する場合、今回は基本的に抽選時間に含まれます。実際のアプリケーションでは、データをGPUにプッシュするのに時間がかかる場合があります。この例には、スプライトごとに2つのフロートを持つ1つのVBO(または頂点アレイ)のみが含まれています。実際のアプリケーションには、より多くのデータがあります(サイズやテクスチャ情報など)。
計算情報は、フレームの背景色と各スプライトの新しい位置を計算するのにかかる時間に関するものです。 JITを有効にすると、計算時間はJava(Canvas)テストとネイティブ(Open GL)テストの間で匹敵しますが、JIT無効にすると、Javaは重大なペナルティを受けます。