Nikmati jutaan aplikasi Android terbaru, game, musik, film, TV, buku, majalah & lainnya. Kapan pun, di mana pun, di seluruh perangkat Anda.
Aplikasi ini ditargetkan untuk pengembang, atau siapa pun yang ingin tahu tentang perbedaan kinerja antara OpenGL dan Canvas. Secara khusus, ini mengukur performa menggambar sprite 2D secara eksplisit menggunakan OpenGL ES 2.0 dengan gabungan Java dan C, dan menggambar sprite 2D menggunakan Canvas dengan Java.
Setelah selesai menjalankan pengujian, Anda dapat melihat analisis benchmark kinerja dengan menekan tombol kembali pada perangkat.
Ini mirip dengan Tes Metode Sprite oleh Chris Pruett, tetapi diperbarui untuk OpenGL ES 2.0. Tes Metode Sprite miliknya menjalankan ES 1.0 yang sudah ketinggalan zaman, dan rusak di Jelly Bean (karena tripple buffering).
Aplikasi ini berfungsi pada semua perangkat yang mendukung OpenGL ES 2.0.
Ini bebas iklan dan bebas cerewet.
Lebih detailnya:
Secara khusus, aplikasi ini mengukur kinerja menggambar sprite 2D secara eksplisit menggunakan OpenGL ES 2.0 dengan hybrid Java dan C, dan menggambar sprite 2D menggunakan Canvas dengan Java.
Di setiap bingkai:
Warna latar belakang sedikit bergeser, berkedip antara merah dan putih.
Setiap sprite memindahkan jumlah acak (Gaussian). Jika bagian tengah sprite melewati tepi layar, sprite berpindah ke lokasi layar acak.
Pengujian Canvas menggunakan SurfaceView dan Canvas.drawBitmap(). Semua penghitungan dilakukan di Java (menggunakan Random.nextGaussian() dan Random.nextFloat()) pada float[].
Tes OpenGL ES 2.0 menggunakan GLSurfaceView di Java. Perhitungan dilakukan dalam C (menggunakan drand48() dan inline C yang setara dengan algoritma Gaussian Java) pada float[] asli. Menggambar juga dilakukan di C, menggunakan glDrawArrays(GL_POINTS, ...). Metode C (NDK) memanggil setiap frame dari Java melalui JNI.
Semua pengujian memiliki overhead yang sama untuk operasi pembuatan profil di Java.
Statistik:
Informasi FPS adalah tentang kapan frame benar-benar diposting ke layar (secara teknis, SurfaceFlinger).
Informasi Draw adalah tentang waktu yang diperlukan untuk mengeluarkan (dan glFlush() + glFinish(), dalam pengujian OpenGL) perintah menggambar. Ini tidak menghitung waktu untuk membalik buffer layar.
Informasi Push (hanya VBO) adalah tentang waktu yang diperlukan untuk mendorong data vertex ke buffer GPU. Ini sering kali <0,5 ms (yang dibulatkan menjadi 0,000 dtk) per frame. Saat menggunakan pengujian OpenGL non-VBO, waktu ini pada dasarnya disertakan dalam waktu pengundian. Dalam aplikasi praktis, mungkin diperlukan waktu lebih lama untuk mengirim data ke GPU. Contoh ini hanya berisi satu VBO (atau array Vertex) dengan 2 float per sprite. Aplikasi praktis akan memiliki lebih banyak data (seperti informasi ukuran dan tekstur).
Informasi Calc adalah tentang waktu yang diperlukan untuk menghitung warna latar belakang bingkai dan posisi baru setiap sprite. Jika JIT diaktifkan, waktu penghitungan akan sebanding antara pengujian Java (Canvas) dan pengujian asli (Open GL), namun jika JIT dinonaktifkan, Java akan mengalami penalti yang signifikan.
Baca selengkapnya