เพลิดเพลินไปกับแอพ Android เกมเกมเพลงภาพยนตร์ทีวีหนังสือนิตยสารและอื่น ๆ อีกมากมาย ทุกที่ทุกเวลาข้ามอุปกรณ์ของคุณ
แอพนี้มีเป้าหมายที่นักพัฒนาหรือใครก็ตามที่อยากรู้เกี่ยวกับความแตกต่างของประสิทธิภาพระหว่าง OpenGL และ Canvas โดยเฉพาะอย่างยิ่งมันวัดประสิทธิภาพของการวาดสไปรต์ 2D อย่างชัดเจนโดยใช้ OpenGL ES 2.0 ด้วยไฮบริดของ Java และ C และการวาด Sprites 2D โดยใช้ Canvas กับ Java
เมื่อคุณทำการทดสอบเสร็จแล้วคุณสามารถเห็นการวิเคราะห์มาตรฐานของประสิทธิภาพโดยกดปุ่มย้อนกลับของอุปกรณ์
มันคล้ายกับการทดสอบวิธีการ Sprite โดย Chris Pruett แต่ได้รับการปรับปรุงสำหรับ OpenGL ES 2.0 การทดสอบวิธีการ Sprite ของเขาดำเนินการ ES 1.0 ที่ล้าสมัยและถูกทำลายบน Jelly Bean (เนื่องจากการบัฟเฟอร์ therple)
แอพนี้ใช้งานได้กับอุปกรณ์ทั้งหมดที่รองรับ OpenGL ES 2.0
นี่คือปลอดโฆษณาและปราศจาก nag
รายละเอียดเพิ่มเติม:
โดยเฉพาะแอพนี้วัดประสิทธิภาพของการวาดสไปรต์ 2D อย่างชัดเจนโดยใช้ OpenGL ES 2.0 ด้วยไฮบริดของ Java และ C และการวาด Sprites 2D โดยใช้ Canvas กับ Java
ในทุกเฟรม:
สีพื้นหลังจะเปลี่ยนเล็กน้อยเต้นระหว่างสีแดงและสีขาว
สไปรต์แต่ละครั้งจะย้ายจำนวนสุ่ม (เกาส์เซียน) หากศูนย์กลางของสไปรต์ผ่านขอบของหน้าจอสไปรต์จะย้ายไปยังตำแหน่งหน้าจอแบบสุ่ม
การทดสอบ Canvas ใช้ SurfaceView และ Canvas.DrawBitMap () การคำนวณทั้งหมดจะทำใน Java (โดยใช้ Random.nextgaussian () และ random.nextfloat ()) บนลอย []
การทดสอบ OpenGL ES 2.0 ใช้ GLSURFACEVIEW ใน Java การคำนวณทำได้ใน C (โดยใช้ DRAND48 () และอินไลน์ C เทียบเท่ากับอัลกอริทึม Gaussian ของ Java) บนลอยพื้นเมือง [] การวาดภาพยังทำใน C โดยใช้ gldrawarrays (gl_points, ... ) วิธี C (NDK) เรียกว่าทุกเฟรมจาก Java ผ่าน JNI
การทดสอบทั้งหมดมีค่าใช้จ่ายที่เหมือนกันของการดำเนินการทำโปรไฟล์ใน Java
สถิติ:
ข้อมูล FPS เป็นเรื่องเกี่ยวกับเมื่อมีการโพสต์เฟรมลงบนหน้าจอ (ในทางเทคนิค SurfaceFlinger)
ข้อมูลการวาดคือเวลาที่ใช้ในการออก (และ glflush () + glfinish () ในการทดสอบ OpenGL) คำสั่งการวาด มันไม่ได้นับเวลาในการพลิกบัฟเฟอร์หน้าจอจริง
ข้อมูลพุช (VBO เท่านั้น) เป็นเวลาที่ใช้ในการผลักดันข้อมูลจุดสุดยอดไปยังบัฟเฟอร์ GPU สิ่งนี้มักจะเป็น <.5ms (ซึ่งเป็น 0.000S) ต่อเฟรม เมื่อใช้การทดสอบที่ไม่ใช่ VBO OpenGL เวลานี้จะรวมอยู่ในเวลาการวาดแทน ในการใช้งานจริงอาจใช้เวลานานกว่าในการผลักดันข้อมูลไปยัง GPU ตัวอย่างนี้มีเพียงหนึ่ง VBO (หรืออาร์เรย์จุดสุดยอด) ที่มี 2 ลอยต่อสไปรท์ แอปพลิเคชันที่ใช้งานได้จริงจะมีข้อมูลมากขึ้น (เช่นขนาดและข้อมูลพื้นผิว)
ข้อมูล CALL เป็นเวลาเกี่ยวกับเวลาที่ใช้ในการคำนวณสีพื้นหลังของเฟรมและตำแหน่งใหม่ของสไปรต์แต่ละตัว เมื่อเปิดใช้งาน JIT เวลาการคำนวณจะเปรียบเทียบได้ระหว่างการทดสอบ Java (Canvas) และการทดสอบแบบดั้งเดิม (เปิด GL) แต่ด้วยการปิดใช้งาน JIT Java จะได้รับการลงโทษอย่างมีนัยสำคัญ