OpenGL ES จะทำงานได้ดีกว่า CoreAnimation สำหรับการสร้างภาพเคลื่อนไหวนับร้อยชั้นหรือไม่

ฉันมีวัตถุซึ่งประกอบด้วย CATransformLayer ที่มีเลเยอร์ย่อย CAKeyframeAnimated สองตัว เมื่อเพิ่มออบเจ็กต์นี้เพียง 10 อินสแตนซ์ในเลเยอร์ของมุมมอง fps จะลดลงเหลือ ~ 10/15 fps ไม่รู้เท่าไหร่แต่ดูไม่ดีเลย สร้างภาพเคลื่อนไหวได้เพียง 20 ภาพเท่านั้น ตำแหน่งของวัตถุไม่ได้ถูกคีย์เฟรม

ฉันใช้สิ่งนี้บน iPad Mini

สิ่งนี้มากเกินไปสำหรับ iPad Mini หรือฉันจะได้ผลลัพธ์ที่ดีขึ้นเมื่อใช้ OpenGL ES หรือไม่


person alecail    schedule 27.03.2013    source แหล่งที่มา
comment
OpenGL จะเร็วขึ้นเสมอ แต่คุณกำลังสร้างแอนิเมชันอะไรกันแน่ และคุณหมายถึงอะไรว่าวัตถุนั้นไม่เคลื่อนไหวด้วยซ้ำ การวาดใหม่ยังคงเป็นการวาดใหม่โดยไม่คำนึงถึงตำแหน่ง x,y หากมีการแปลงเกิดขึ้น   -  person Mark McCorkle    schedule 27.03.2013
comment
@MarkM ฉันหมายความว่าฉันแค่เพิ่มวัตถุในตำแหน่งสุ่มบนเลเยอร์ เพียงเพื่อตรวจสอบว่าภาพเคลื่อนไหวของเลเยอร์ย่อยนั้นใช้ได้   -  person alecail    schedule 27.03.2013
comment
โดยไม่รู้ว่าคุณกำลังพยายามสร้างภาพเคลื่อนไหวอะไร ฉันขอแนะนำให้ใช้ Cocos2d เพื่อทำสิ่งนี้ให้สำเร็จทันที คุณสามารถทำอะไรได้มากมายกับ CALayers แต่ประสิทธิภาพจะดีกว่าเสมอเมื่อใช้เฟรมเวิร์กที่ใช้ OpenGL เช่น Cocos2d โดยเฉพาะอย่างยิ่งกับฉากที่ค่อนข้างซับซ้อน   -  person Mark McCorkle    schedule 27.03.2013
comment
@MarkM ฉันกำลังทดสอบ CoreAnimation มากกว่าเพื่อดูว่ามันทำงานอย่างไรกับเลเยอร์จำนวนมากมากกว่าที่จะมีปัญหาในแอปพลิเคชันจริง ฉันเดาว่า CALayers นั้นมีไว้สำหรับแอนิเมชั่น UI   -  person alecail    schedule 27.03.2013


คำตอบ (1)


ฉันขอแนะนำให้ใช้ Cocos2d สำหรับฉากที่ค่อนข้างซับซ้อน มีบทเรียนที่ดีบางอย่างบนเน็ต Ray มีบทเรียนดีๆ ในเรื่องนี้อยู่เสมอ และเป็นที่ที่ฉันเรียน cocos2d เป็นครั้งแรก มันไม่ซับซ้อนอย่างที่คิด นอกจากนี้ การเพิ่มฟิสิกส์ยังเป็นเรื่องง่ายเนื่องจากได้รับการสนับสนุนจากชุมชนจำนวนมาก (http://www.raywenderlich.com/28602/intro-to-box2d-with-cocos2d-2-x-tutorial-bouncing-balls)

person Mark McCorkle    schedule 27.03.2013