#import "Fraction.h" #import <stdio.h> @implementation Fraction -(Fraction*) initwithnumerator: (int) n denominator: (int) d { self = [super init]; } if ( self ) { [self setnumerator: n anddenominator: d]; } return self; GLKit -(void) print { printf( "%i/%i", numerator, denominator ); } -(void) setnumerator: (int) n { numerator = n; } Wykład 10 -(void) setdenominator: (int) d { denominator = d; } -(void) setnumerator: (int) n anddenominator: (int) d { numerator = n; denominator = d; Programowanie aplikacji mobilnych na urządzenia Apple (IOS i ObjectiveC)
Grafika i animacja w IOS Różne frameworki UIKit w Objective-C Core Graphics w C OpenGL ES 3D w C GLKit 3D w Objective-C 2
OpenGL ES OpenGL ES (ang. OpenGL for Embedded Systems) podzbiór OpenGL 3D zaprojektowany m.in. dla urządzeń mobilnych typu telefony komórkowe, palmtopy i konsole do gier. Jest zdefiniowany i rozpowszechniany przez Khronos Group. OpenGL ES jest oficjalnym API dla grafiki 3D w systemach Symbian, Android i ios 3
OpenGL ES 4
GLKit i OpenGLES IOS - OpenGL ES 2.0 GLKit framework dostraczający obiektowe narzędzia pozwalające na pracę z OpenGL ES 5
Możliwości GLKit Ładowanie tekstur Z różnych źródeł Ładowanie asynchroniczne Mała ilość potrzebnego kodu Automatyczna obsługa standardowych typów plików 6
Możliwości GLKit Biblioteka matematyczna Wektory Kwaterniony Operacje macierzowe Macierze Wysoka wydajność funkcji działających na tych danych 7
Możliwości GLKit Efekty podstawowa implementacja standardowych zadań OpenGL Konfiguracja efektu Dostarczenie danych wierzchołków Efekt tworzy odpowiedni shader i wykonuje operacje potrzebne do wyrenderowania sceny 8
View Controller dla GLKit Widoki w podstawowej implementacji umożliwiają wyświetlenie sceny OpenGL Minimalizacja ilości kodu 9
GLKit - zalety Ułatwienia tworzenia aplikacji Rozwiązania standardowych problemów Zmniejszenie ilości kodu Zapewniają podobny wygląd programów Można tworzyć własne shadery 10
Tworzenie tekstur w GLKit GLKTextureLoader Tworzy referencję do odpowiedniej tekstury Nie ma potrzeby użycia ImageIO, CGImage, libjpg, libpng 11
Tworzenie tekstur w GLKit Wsparcie dla standardowych formatów graficznych PNG, JPEG, TIFF, etc. Wsparcie dla zaawansowanych formatów tekstur (na przykład mapa sześcienna) Łatwe zarządzanie teksturami Generowanie mipmap 12
GLKTextureLoader - użycie Ustawienie kontekstu EAGLContext Wywołanie funkcji GLKTextureLoader Pobranie za pomocą obiektu GLKTextureInfo nazwy tekstury 13
GLKTextureLoader przykład 14
GLKTextureLoader Scenariusz Tworzymy obiekt GLKTextureLoader Wywołujemy metodę tego obiektu, która załaduje teksturę Pobieramy obiekt GLKTextureInfo zawierający informację o identyfikatorze tekstury, który możemy później użyć w OpenGL ES 15
GLKView i GLKViewController Aby użyć OpenGL ES wystarczy widok dziedziczący z klasy UIView. Można go używać dokładnie w ten sam sposób Podklasa tego widoku lub delegat może być używany do rysowania Automatyczna obsługa Przestrzeni rysowania Koloru Głębokości sceny Ustawiania kontekstu Wyświetlania sceny Wsparcie dla zrzutu sceny do bitmapy 16
GLKViewController Dziedziczy z UIViewController Obsługuje odrysowywanie widoku GLKView Można konfigurować ilość ramek na sekundę Automatycznie określa miejsce wyświetlania sceny na ekranie Dostarcza dostęp do statystyk 17
GLKMath Biblioteka matematyczna Macierze 4x4 i 3x3 i stos macierzy 4, 3, 2 wymiarowe wektory transformacje, Kwaterniony Obsługa operacji matematycznych w przestrzeni 3D 18
GLKMath przykład użycia 19
GLKit - efekty GLKBaseEffect Podstawowy model sceny i oświetlenia GLKReflectionMapEffect Mapowanie odbić GLKSkyboxEffect Implementacja efektu środowiska (nieba) 20
GLKEffect - użycie Tworzymy instancję klasy GLKEffect Konfigurujemy parametry Wywołujemy metodę [myeffect preparetodraw] Ustawiamy dane wierzchołków Wywołujemy metody opengl gldrawarrays() gldrawelements() 21
GLKEffect - ułatwienia Obsługuje automatycznie podstawowe ustawienia sceny Oświetlenie Materiały Multiteksturowanie Mgłę Kolory Transformacje 22
Przykład 23
SkyBoxEffect Ułatwia stworzenie środowiska GLKSkybox dostarcza proste API pozwalające na dodanie do sceny pudełka teksturowanego obrazem przestrzeni Np. nieba Proste parametry centrowania i rozmiaru Nie potrzebne są dane wierzchołkówautomatyczne ich wyznaczanie 24
Przykład 25
GLKReflectionMapEffect GLKReflectionMapEffect Dodanie odbić do obiektu GLKReflectionMap rozszerza GLKBaseEffect Odbicia mogą być połączone z Multiteksturowaniem Oświetlniem Efektami Mgły Reflections can be combined with the Używa mapy sześciennej 26
Zakończenie KONIEC 27