استمتع بملايين من أحدث التطبيقات والألعاب والموسيقى والأفلام والعروض التلفزيونية والكتب والمجلات والمزيد على نظام التشغيل Android، والمزيد. في أي وقت وفي أي مكان عبر أجهزتك.
يستهدف هذا التطبيق المطورين أو أي شخص لديه فضول بشأن اختلافات الأداء بين OpenGL وCanvas. على وجه التحديد، فهو يقيس أداء رسم النقوش المتحركة ثنائية الأبعاد بشكل واضح باستخدام OpenGL ES 2.0 مع مزيج من Java وC، ورسم النقوش المتحركة ثنائية الأبعاد باستخدام Canvas مع Java.
عند الانتهاء من إجراء الاختبار، يمكنك رؤية تحليل الأداء عن طريق الضغط على زر الرجوع بالجهاز.
إنه مشابه لاختبار طريقة Sprite بواسطة Chris Pruett، ولكن تم تحديثه لـ OpenGL ES 2.0. يقوم اختبار أسلوب Sprite الخاص به بتشغيل الإصدار ES 1.0 القديم، وهو معطل على Jelly Bean (بسبب التخزين المؤقت الثلاثي).
يعمل هذا التطبيق على جميع الأجهزة التي تدعم OpenGL ES 2.0.
هذا خالي من الإعلانات وخالي من التذمر.
مزيد من التفاصيل:
على وجه التحديد، يقيس هذا التطبيق أداء رسم النقوش المتحركة ثنائية الأبعاد بشكل صريح باستخدام OpenGL ES 2.0 مع مزيج من Java وC، ورسم النقوش المتحركة ثنائية الأبعاد باستخدام Canvas مع Java.
في كل إطار:
يتغير لون الخلفية قليلاً، وينبض بين الأحمر والأبيض.
يقوم كل كائن بتحريك مقدار عشوائي (غاوسي). إذا تجاوز مركز الكائن حافة الشاشة، فسيتحرك الكائن إلى موقع شاشة عشوائي.
يستخدم اختبار Canvas SurfaceView وCanvas.drawBitmap(). تتم جميع الحسابات في Java (باستخدام Random.nextGaussian() وRandom.nextFloat()) على float[].
تستخدم اختبارات OpenGL ES 2.0 GLSurfaceView في Java. يتم إجراء الحساب بلغة C (باستخدام drand48() وما يعادله من خوارزمية Gaussian الخاصة بـ Java) على float[]. يتم الرسم أيضًا بلغة C، باستخدام glDrawArrays(GL_POINTS, ...). تُسمى أساليب C (NDK) بكل إطار من Java إلى JNI.
جميع الاختبارات لها نفس الحمل العام لعمليات التوصيف في Java.
إحصائيات:
تتعلق معلومات FPS بالوقت الذي يتم فيه نشر الإطارات فعليًا على الشاشة (من الناحية الفنية، SurfaceFlinger).
تتعلق معلومات الرسم بالوقت الذي يستغرقه إصدار أوامر الرسم (و glFlush() + glFinish()، في اختبار OpenGL). لا يحسب الوقت لقلب المخازن المؤقتة للشاشة فعليًا.
تتعلق معلومات الدفع (VBO فقط) بالوقت الذي يستغرقه دفع بيانات القمة إلى المخزن المؤقت لوحدة معالجة الرسومات. سيكون هذا غالبًا <.5 مللي ثانية (والتي يتم تقريبها إلى 0.000 ثانية) لكل إطار. عند استخدام اختبار غير VBO OpenGL، يتم تضمين هذه المرة بشكل أساسي في وقت السحب بدلاً من ذلك. في التطبيقات العملية، قد يستغرق الأمر وقتًا أطول لدفع البيانات إلى وحدة معالجة الرسومات. يحتوي هذا المثال على VBO واحد فقط (أو مصفوفة Vertex) مع عددين عائمين لكل كائن. ستحتوي التطبيقات العملية على المزيد من البيانات (مثل معلومات الحجم والملمس).
تتعلق معلومات الحساب بالوقت الذي يستغرقه حساب لون خلفية الإطار والموضع الجديد لكل كائن. عند تمكين JIT، يكون وقت الحساب قابلاً للمقارنة بين اختبار Java (Canvas) والاختبارات الأصلية (Open GL)، ولكن مع تعطيل JIT، تتعرض Java لعقوبة كبيرة.
اقرأ المزيد