1 Techniki programowania gierDariusz Maciejewski
2 Plan prezentacji automatyczne singletonyzarządzanie uchwytami do zasobów efektywne renderowanie z wykorzystaniem tablic wierzchołków animacja szkieletowa moja praca magisterska
3 Automatyczne singletonyco to jest singleton? dlaczego warto ich używać? singleton vs. globalny obiekt rozwiązanie ”szkolne” rozwiązanie alternatywne... ... z wykorzystaniem szablonów
4 Automatyczne singletonyrozwiązanie ”szkolne”: class Singleton { private: Singleton() {} ~Singleton() {} public: static Singleton &GetSingleton() static Singleton s_Singleton; return s_Singleton; } #define g_Singleton Singleton::GetSingleton()
5 Automatyczne singletonyalternatywne podejście: class Singleton { private: static Singleton* ms_Singleton; public: Singleton() { assert( !ms_Singleton ); ms_Singleton = this; } ~Singleton() { assert( ms_Singleton ); ms_Singleton = 0; static Singleton &GetSingleton() { assert( ms_Singleton ); return *ms_Singleton; } }
6 Automatyczne singletonyszablon klasy Singleton: template
7 Automatyczne singletony...i jego zastosowanie: class TextMgr : public Singleton
8 Uchwyty do zasobów zarządzanie zasobami w grach tekstury czcionkipostacie dźwięki ... wady wykorzystywania wskaźników zastosowanie uchwytów
9 Uchwyty do zasobów zarządzanie zasobami w grachwady wykorzystywania wskaźników czy dane można już bezpiecznie usunąć? brak możliwości kontroli ważności wskaźnika problem z zapisem/odczytem stanu gry zastosowanie uchwytów
10 Uchwyty do zasobów zastosowanie uchwytów dodatkowa warstwa abstrakcjiprostota = szybkość class Handle { union { struct { unsigned m_Index : 16; // indeks tablicy unsigned m_Magic : 16; // magiczna liczba }; unsigned int m_Handle; /* ... */
11 Uchwyty do zasobów zarządca uchwytów:template
12 Uchwyty do zasobów ...i jego zastosowanie:class TextMgr : public Singleton
13 Efektywne renderowanieMetody dostarczania wierzchołków do karty graficznej: tryb bezpośredni dane przeplatane dane krokowe i strumieniowe, CVA glVertexPointer, glColorPointer,... rozszerzenia producentów, VBO
14 Efektywne renderowanieMetody dostarczania wierzchołków do karty graficznej: tryb bezpośredni glColor*, glTexture*, glVertex* dużo wywołań funkcji = duży narzut czasowy
15 Efektywne renderowanieMetody dostarczania wierzchołków do karty graficznej: dane przeplatane glInterleavedArrays, glDrawArrays/glDrawElements GL_T2F_C3F_V3F {tx,ty,r,g,b,a,x,y,z}, {tx,ty,r,g,b,a,x,y,z}, {tx,ty,r,g,b,a,x,y,z}, ...
16 Efektywne renderowanieMetody dostarczania wierzchołków do karty graficznej: dane krokowe i strumieniowe, CVA glVertexPointer, glColorPointer,... glDrawArrays/glDrawElements {tx,ty,r,g,b,a,x,y,z,...}, {tx,ty,r,g,b,a,x,y,z,...}, {tx,ty,r,g,b,a,x,y,z,...}, {x,y,z},{x,y,z},{x,y,z},{x,y,z},... {tx,ty},{tx,ty},{tx,ty},{tx,ty},... {r,g,b,a},{r,g,b,a},{r,g,b,a},...
17 Efektywne renderowanie
18 Efektywne renderowanieMetody dostarczania wierzchołków do karty graficznej: rozszerzenia producentów, VBO dane przechowywane w pamięci karty graficznej jak skompilowanych listach możliwość modyfikacji danych po stronie karty graficznej!
19 Animacja szkieletowa animowany modelskóra - siatka złożona z wielokątów szkielet - pełni funkcję pomocniczą, nie jest renderowany źródło: sound.eti.pg.gda.pl/student/sdio/1 -Animacja.pdf
20 Animacja szkieletowa hierarchiczna struktura kościanimowanie sekwencyjne odwrotna kinematyka źródło: sound.eti.pg.gda.pl/student/sdio/1 -Animacja.pdf
21 Animacja szkieletowa algorytm animacji szkieletowejaktualizacja szkieletu dla każdego wierzchołka, na podstawie ważonej transformacji modyfikujących go kości, obliczana jest pozycja wypadkowa
22 Moja praca magisterska
23 Literatura „Perełki programowania gier – tom 1” pod redakcją Marka DeLoura – Helion 2002 Animacja szkieletowa z wykorzystaniem shaderów wierzchołków grafika.iinf.polsl.gliwice.pl/doc/09-SKE.pdf Podstawy animacji komputerowej sound.eti.pg.gda.pl/student/sdio/12- Animacja.pdf
24 Dziękuję za uwagę. Pytania?Game over Dziękuję za uwagę. Pytania?