2011-10-05 15 views
7

Chciałbym wiedzieć, jakie korzyści wynikają z zastosowania Core Graphics zamiast Open GL ES. Moje główne pytanie jest oparte na tym:Zalety korzystania z Core Graphics

  • Tworzenie prostych animacji widoku.
  • Tworzenie obiektów wizualnie atrakcyjnych (grafika, np. Wykres główny, obiekty animowane itp.).
  • czasochłonne (zarówno uczenia się i wdrażania)
  • prostych gier 2D
  • złożonych grach 2D
  • 3D Gry
  • ad utrzymanie Code także czystsze kod.
  • Łatwiejsza integracja z innymi elementami interfejsu użytkownika.

Dzięki.

Odpowiedz

21

Po pierwsze, chcę wyjaśnić tutaj trochę terminologii. Kiedy ludzie mówią o Core Graphics, zazwyczaj odnoszą się do rysunku 2D Quartz, który jest opartym na wektorach 2D interfejsem do rysowania. Służy do rysowania elementów wektorowych na ekranie lub w kontekstach poza ekranem, takich jak pliki PDF. Animacja rdzenia jest odpowiedzialna za animację, układ i pewne ograniczone efekty trójwymiarowe obejmujące warstwy prostokątne i elementy interfejsu użytkownika. OpenGL ES jest interfejsem API niższego poziomu służącym do rozmawiania ze sprzętem graficznym na urządzeniach z systemem iOS zarówno dla rysunków 2D, jak i trójwymiarowych.

Bardzo dużo zadajesz w swoim pytaniu, a ocena tego, co najlepsze w każdym scenariuszu, jest subiektywna i zależy wyłącznie od programisty i jego konkretnych potrzeb. Mogę jednak podać kilka ogólnych wskazówek.

Ogólnie rzecz biorąc, zalecenie, które zobaczysz w dokumentacji Apple oraz w prezentacjach inżynierów, oznacza, że ​​najlepiej jest używać najwyższego poziomu abstrakcji, który rozwiązuje dany problem.

Jeśli chcesz tylko narysować interfejs użytkownika 2D, pierwszą rzeczą, którą powinieneś wypróbować, jest zaimplementowanie tego przy użyciu dostarczonych przez Apple elementów UIKit. Jeśli nie mają potrzebnych możliwości, utwórz niestandardowe UIViews. Jeśli projektujesz wieloplatformowy kod Mac-iOS (jak w środowisku Core Plot), możesz przejść do używania niestandardowych CALayerów Core Animation.Każdy krok w tym procesie wymaga napisania więcej kodu, aby poradzić sobie z rzeczami, które powyższy poziom zrobił dla ciebie.

Możesz zrobić zaskakującą ilość rzeczy z Core Animation, z całkiem niezłą wydajnością. Nie ogranicza się to tylko do animacji 2D, ale może również rozszerzyć się na proste prace trójwymiarowe.

OpenGL ES znajduje się pod rysunkiem wszystkich elementów widocznych na ekranie urządzenia z systemem iOS, ale nie jest to dla użytkownika widoczne. Jako taki zapewnia najmniej abstrakcji do renderowania na ekranie i wymaga napisania większości kodu, aby coś zrobić. Może być jednak konieczne w sytuacjach, w których chcesz uzyskać największą wydajność z wyświetlania 2-D (np. W grze akcji) lub renderować prawdziwe obiekty 3D i środowiska.

Ponownie, zalecam, aby ludzie zaczęli od najwyższego poziomu abstrakcji podczas pisania aplikacji, i upuszczali je tylko wtedy, gdy stwierdzą, że nie mogą czegoś zrobić lub wydajność nie mieści się w specyfikacji, którą próbują osiągnąć. Mniej linii kodu ułatwia pisanie, debugowanie i konserwację aplikacji.

To powiedziawszy, istnieją pewne fajne ramy, które rozwinęły się wokół abstrakcji OpenGL ES, takich jak cocos2D i Unity 3D, co może ułatwić pracę z OpenGL ES w wielu sytuacjach. W każdym przypadku musisz ocenić, co ma sens w przypadku konkretnych potrzeb Twojej aplikacji.

4

Zasadniczo użyj OpenGL, jeśli tworzysz grę. W przeciwnym razie użyj CoreGraphics. CoreGraphics umożliwia robienie prostych rzeczy osadzonych w normalnym kodzie użytkownika.

Tworzenie prostych animacji widoku. -> CG

Tworzenie obiektów wizualnie atrakcyjnych (grafika, np. Wykres główny, obiekty animowane itp.). -> CG

Czasochłonne (zarówno uczenie się, jak i wdrażanie) -> OpenGL i CG są początkowo dość trudne.

Proste 2D Gry -> OpenGL

złożonych grach 2D -> OpenGL

Gry 3D -> OpenGL

ogłoszenie utrzymanie Code także czystsze kod. -> Nieistotne

+0

Czy zamieniłbyś nauczanie OpenGL z Cocos2d (na przykład) w grach 2D? Zmieniłem swój oryginalny post, dodałem "Łatwiejszą integrację z innymi elementami interfejsu użytkownika". Dzięki, Andrew. – Peres

+0

Dodam, że podejście combo może również dobrze działać w niektórych sytuacjach - użyj CoreGraphics, aby narysować zasób z góry, a następnie OpenGL, aby rozmieścić i zaprezentować każdą klatkę. –

Powiązane problemy