За да поясня, знам, че атласът на текстурата подобрява производителността при използване на множество различни изображения. Но ми е интересно как се правят нещата, когато вие не правите това.
Опитах се да направя ръчно анимация кадър по кадър в персонализиран OpenGL, където всеки кадър обвързвам нова текстура и я рисувам върху същия точков спрайт. Работи, но е много бавен в сравнение със способността UIImageView
да абстрахира същото. Зареждам всички текстури отпред, но повторното свързване се извършва за всеки кадър. За сравнение, UIImageView
приема отделните изображения, а не текстурен атлас, така че бих си представил, че се справя по подобен начин.
Това са 76 изображения, заредени поотделно, а не като текстурен атлас, и всяко е около 200 пиксела квадрат. В OpenGL подозирам, че тясното място е изискването за повторно свързване на текстура във всеки кадър. Но как UIImageView
прави това, тъй като бих очаквал подобно тясно място?? UIImageView
създава ли по някакъв начин атлас зад кулисите, така че да не е необходимо повторно свързване на текстури? Тъй като UIKit в крайна сметка има OpenGL, работещ под него, любопитен съм как трябва да работи това.
Ако има по-ефикасно средство за анимиране на множество текстури, вместо да се разменят различни обвързани текстури всеки кадър в OpenGL, бих искал да знам, тъй като може да намекне какво прави Apple в тяхната рамка .
Ако наистина получа нов кадър за всеки от 60 кадъра за секунда, тогава ще са ми необходими около 1,25 секунди за анимиране на моите 76 кадъра. Наистина получавам това с UIImageView, но OpenGL отнема около 3 - 4 секунди.