Techniki programowania gier

Slides:



Advertisements
Podobne prezentacje
>>MoJa SzKoŁa I Ja<<
Advertisements

C++ wykład 9 ( ) Szablony.
C++ wykład 2 ( ) Klasy i obiekty.
Programowanie obiektowe
C++ wykład 13,14,15 (16/23/ ) STL.
Deklaracje i definicje klas w C++ Składowe, pola, metody Konstruktory
Klasa listy jednokierunkowej Przekazywanie parametrów do funkcji
Programowanie obiektowe
Standardowa biblioteka języka C++
Programowanie obiektowe
Programowanie obiektowe PO PO - LAB 3 Wojciech Pieprzyca.
Wskaźniki repetytorium Wskaźniki int Y = 1, X = 2; X = 5; int *p = &X; Y X p 4 4 p = &Y; *p = 4; 5.
Wzorce.
Język ANSI C Funkcje Wykład: Programowanie komputerów
Wprowadzenie.
Static, const, volatile.
Dziedziczenie. Po co nam dziedziczenie? class osoba { char * imie, char * imie, * nazwisko; * nazwisko;public: void wypisz_imie(); void wypisz_imie();
Bezpieczeństwo wyjątków w C++: OpenGL
Dziel – Rządź - Złącz.
Implementacja algorytmów na procesory kart graficznych
Implementacja ekstensji klasy
Szablony (wzorce) Przykład 1: Szablon klasy -
Wielodziedziczenie od środka Konrad Lipiński
Licznik template<class Count_Type> class Count { public:
Obiektowe metody projektowania systemów Command Pattern.
C++ wykład 2 ( ) Klasy i obiekty.
Wykład 1: Wskaźniki Podstawy programowania Programowanie w C
Języki programowania obiektowego
Geometria obrazu Wykład 15
Pamięć wspólna Opis własnego rozwiązania Marcin Kamiński, Michał Kotra Wydział EAIiE Katedra Automatyki Kraków, 2008.
Techniki programowania gier - Fizyka
nowe operatory & . (kropka) * operator rzutowy -> , (przecinek)
Wieloplatformowa Gra edukacyjna dla nastolatków
Klasy w C++. Deklaracja klasy class NazwaTwojejKlasy { //w tym miejscu piszemy definicje typów, //zmienne i funkcje jakie mają należeć do klasy. }; //tutaj.
Metody Programowania Wykład
Programowanie obiektowe III rok EiT
Jerzy F. Kotowski1 Informatyka I Wykład 9 TABLICE PREPROCESOR OPERATORY c.d. (nie tylko binarne)
Języki wysokiego poziomu: – funkcje i programowanie bezklasowe
Podstawy programowania II
Jerzy F. Kotowski1 Informatyka I Wykład 11 STRUKTURY I UNIE.
Podstawy Programowania
Programowanie obiektowe w C++
Programowanie obiektowe III rok EiT dr inż. Jerzy Kotowski Wykład IX.
Java – coś na temat Klas Piotr Rosik
Programowanie obiektowe
Programowanie obiektowe Wykład 3 dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ 1/21 Dariusz Wardowski.
Programowanie obiektowe Wykład 7 dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ 1/20 Dariusz Wardowski.
Programowanie obiektowe Wykład 6 dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ 1/14 Dariusz Wardowski.
Programowanie obiektowe 2013/2014
Kurs języka C++ – wykład 3 ( )
Dobry kod OO Jeżeli zapytamy statystycznego programistę z czym kojarzy mu się dobry kod OO to najprawdopodobniej będzie mówił o wzorcach projektowych.
K URS JĘZYKA C++ – WYKŁAD 10 ( ) Szablony.
Programowanie strukturalne i obiektowe C++ Przeładowanie operatorów Robert Nowak.
Teksturowanie obiektów z wykorzystaniem reprogramowalnych modułów do obliczania cieniowania Daniel Kos promotor: dr inż. Radosław Mantiuk Wydział Informatyki,
Kurs języka C++ – wykład 4 ( )
Programowanie obiektowe Wykład 9 dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ 1/15 Dariusz Wardowski.
Paweł Starzyk Obiektowe metody projektowania systemów
Wykład 4 Klasa Vec, której konstruktory alokują pamięć dla obiektów 1.Przykład definicji klasy Vec 2.Definicje konstruktorów i destruktora 3.Definicja.
Object-relational mapping (aka O/RM, ORM, and O/R mapping)
Wykład 5 Klasa Vec i jej operatory 1.Kategorie operatorów 2.Operatory ogólne - przykłady 3.Operatory specjalne [ ], ( ) oraz –> 4.Operatory new i delete.
Łukasz Sztangret Katedra Informatyki Stosowanej i Modelowania Prezentacja przygotowana w oparciu o materiały Danuty Szeligi i Pawła Jerzego Matuszyka Podstawy.
Podstawy informatyki Struktury Łukasz Sztangret Katedra Informatyki Stosowanej i Modelowania Prezentacja przygotowana w oparciu o materiały Danuty Szeligi.
Asocjacja,Kompozycja,Agregacja
K URS JĘZYKA C++ – WYKŁAD 3 ( ) Przenoszenie Składowe statyczne Funkcje wbudowane Argumenty domyślne.
Zastosowanie narzędzi pracujących w środowisku 3D do animacji postaci.
Geometria obrazu Wykład 13
(według:
Programowanie Obiektowe – Wykład 2
Język C++ Typy Łukasz Sztangret Katedra Informatyki Stosowanej i Modelowania Prezentacja przygotowana w oparciu o materiały Danuty Szeligi i Pawła Jerzego.
Programowanie w Javie 1 Dr Robert Kowalczyk
Zapis prezentacji:

Techniki programowania gier Dariusz Maciejewski

Plan prezentacji automatyczne singletony zarządzanie uchwytami do zasobów efektywne renderowanie z wykorzystaniem tablic wierzchołków animacja szkieletowa moja praca magisterska

Automatyczne singletony co to jest singleton? dlaczego warto ich używać? singleton vs. globalny obiekt rozwiązanie ”szkolne” rozwiązanie alternatywne... ... z wykorzystaniem szablonów

Automatyczne singletony rozwiązanie ”szkolne”: class Singleton { private: Singleton() {} ~Singleton() {} public: static Singleton &GetSingleton()‏ static Singleton s_Singleton; return s_Singleton; } #define g_Singleton Singleton::GetSingleton()‏

Automatyczne singletony alternatywne 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; } }

Automatyczne singletony szablon klasy Singleton: template <typename T> class Singleton { private: static T* ms_Singleton; public: Singleton() { assert( !ms_Singleton ); int offset = (int)(T*)1 -(int)(Singleton<T>*)(T*)1; ms_Singleton = (T*)((int)this + offset); } /* ... */ }; template <typename T> T* Singleton<T>::ms_Singleton = 0;

Automatyczne singletony ...i jego zastosowanie: class TextMgr : public Singleton <TextMgr> { public: Texture* GetTexture( const char* name ); /* ... */ }; #define g_TextMgr TextMgr::GetSingleton()‏ void Example( void )‏ { Texture* stone = TextMgr::GetSingleton(). GetTexture(„stone”); Texture* wood = g_TextMgr.GetTexture(„wood”); }

Uchwyty do zasobów zarządzanie zasobami w grach tekstury czcionki postacie dźwięki ... wady wykorzystywania wskaźników zastosowanie uchwytów

Uchwyty do zasobów zarządzanie zasobami w grach wady 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

Uchwyty do zasobów zastosowanie uchwytów dodatkowa warstwa abstrakcji prostota = szybkość class Handle { union { struct { unsigned m_Index : 16; // indeks tablicy unsigned m_Magic : 16; // magiczna liczba }; unsigned int m_Handle; /* ... */

Uchwyty do zasobów zarządca uchwytów: template <typename DATA> class HandleMgr { private: typedef std::vector <DATA> DataVec; typedef std::vector <unsigned> MagicVec; typedef std::vector <unsigned> FreeVec; DataVec m_Data; MagicVec m_Magic; FreeVec m_FreeSlots; public: DATA *Acquire( Handle& handle ); void Release( Handle handle ); DATA *Dereference( Handle handle ); unsigned int GetUsedHandleCount() const; bool HasUsedHandles() const; };

Uchwyty do zasobów ...i jego zastosowanie: class TextMgr : public Singleton<TextMgr> { private: class Texture { /* ... */ }; HandleMgr<Texture> m_Textures; // name to handle std::map for searching NameIndex m_NameIndex; public: Handle GetTexture ( const char* name ); void DeleteTexture ( Handle htex ); // Some operations on texture int GetWidth ( Handle htex ) const; int GetHeight ( Handle htex ) const; void BindTexture ( Handle htex ) const; };

Efektywne renderowanie Metody dostarczania wierzchołków do karty graficznej: tryb bezpośredni dane przeplatane dane krokowe i strumieniowe, CVA glVertexPointer, glColorPointer,... rozszerzenia producentów, VBO

Efektywne renderowanie Metody dostarczania wierzchołków do karty graficznej: tryb bezpośredni glColor*, glTexture*, glVertex* dużo wywołań funkcji = duży narzut czasowy

Efektywne renderowanie Metody 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}, ...

Efektywne renderowanie Metody 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},...

Efektywne renderowanie

Efektywne renderowanie Metody 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!

Animacja szkieletowa animowany model skó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

Animacja szkieletowa hierarchiczna struktura kości animowanie sekwencyjne odwrotna kinematyka źródło: sound.eti.pg.gda.pl/student/sdio/1 -Animacja.pdf

Animacja szkieletowa algorytm animacji szkieletowej aktualizacja szkieletu dla każdego wierzchołka, na podstawie ważonej transformacji modyfikujących go kości, obliczana jest pozycja wypadkowa

Moja praca magisterska

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

Dziękuję za uwagę. Pytania? Game over Dziękuję za uwagę. Pytania?