2009-07-16 4 views
7

Obecnie mam interfejs użytkownika, który sprawia niesamowite intensywne wykorzystanie rdzenia animacji. Zastanawiam się, czy warto spędzić kolejne 2 miesiące na naukę OpenGL ES? Czy to naprawdę poprawia wydajność rysowania powierzchni 2D? Nie mam obiektów 3D, ale animowane 2D. Czasami z zniekształceniami 3D, dużo obrotów i skalowania.Czy openGL ES ma lepszą wydajność niż Core Animation i UIKit, jeśli chodzi o wysoce animowane interfejsy użytkownika?

W szczególności stworzyłem całą grę z mnóstwem spritów za pomocą CA. Wydajność jest dobra, ale nie idealna.

Odpowiedz

3

To zależy od tego, co robisz i od tego, na jakie urządzenie kierujesz reklamy. Jeśli robisz rzeczy, które mogłyby odnieść korzyść z programowalnego potoku graficznego i kierowania na iPhone'a 3GS, możesz być pewien korzyści, po prostu dlatego, że ta funkcjonalność nie jest wyeksponowana przez CoreAnimation, więc musisz robić to w pewien dziwny sposób (manipulując obrazy itp.). Sprzęt iPhone 3G nie ma programowalnych shaderów, więc nawet jeśli twoje efekty mogą być wyrażone w kategoriach shaderów przechodzących na OpenGL, nie zapewni to korzyści na starszych telefonach.

Jeśli wszystko robisz jest przesuwanie, obracanie i skalowanie powierzchnie 2D następnie CoreAnimation ma dać bardzo podobne działanie do OpenGL, nieznacznie lepiej lub gorzej w zależności od tego, jak dane jest miejsce warstw itp

5

Teoretycznie OpenGL powinien być najszybszym interfejsem API urządzenia, ponieważ jest najbliższy sprzętowi. (Ktoś popraw mnie, jeśli się mylę.) W OpenGL możesz zrobić kilka sprytnych sztuczek, które znacznie ułatwią ci wykonanie - możesz narysować sprite w partiach, możesz użyć spiderów punktowych, możesz spróbować skompresować tekstury , itp.

Z drugiej strony można bardzo zbliżyć się do sprzętu i nie pozostało wiele abstrakcji, przynajmniej w porównaniu do Core Animation. Musisz poradzić sobie z nieenergetycznymi dwoma teksturami, rzutami, macierzami, sam musisz napisać kod animacji itp. Jest wiele miejsc, w których możesz pójść źle i poważnie zabić wydajność, zamiast robić to lepiej.

To co podoba mi się w OpenGL to to, że jest to platforma wieloplatformowa. Istnieje wiele zasobów dotyczących OpenGL, jest wiele miejsca na ulepszenia. Jeśli chcesz pisać gry i mieć czas na naukę OpenGL, zrób to. Zawijanie podstaw OpenGL do projektu OOP nie jest trudne, a ostatecznie uzyskasz więcej miejsca na poprawę wydajności. Dobrym miejscem na rozpoczęcie jest Cocos 2D engine for iPhone.


(Zastrzeżenie: Wiem tylko trochę o OpenGL i nic więcej o Core Animation pisałem dwa 2D gier dla iPhone przy użyciu OpenGL.).

4

poprosiłem te same pytania na ludzi WWDC w zeszłym miesiącu i odpowiedź była zdecydowanie twierdząca - jeśli poświęcisz czas na korzystanie z OpenGL na niskim poziomie, uzyskasz lepszą wydajność w 2D.