Spis treści
1. Wprowadzenie 5
1.1. Kontekst przedsięwzięcia 5
1.2. Cel i zakres pracy 5
1.3. Zespół zarządzający i wykonawczy 6
1.4. Podziękowania 6
2. Opis technologii 8
2.1. OpenGL – historia i rozwój 8
2.2. OpenGL – zakres i zastosowania 9
2.3. OpenGL jako interfejs API 9
2.4. Typy danych 10
2.5. Prymitywy 10
2.5.1. Wierzchołek 10
2.5.2. Pozostałe prymitywy 10
2.6. Bufor głębokości, ukrywanie niewidocznych powierzchni 11
2.7. Optymalizacja renderowania 11
2.8. Przekształcenia 11
2.8.1. Przekształcenia punktu obserwatora 12
2.8.2. Przekształcenia modelu 12
2.8.3. Przekształcenia rzutowania 12
2.8.4. Przekształcenia okna 13
2.8.5. Macierze, kolejka przekształceń 13
2.8.6. Macierz tożsamościowa, stosy macierzy 13
2.9. Rzutowania 14
2.9.1. Rzutowanie perspektywistyczne 14
2.9.2. Rzutowanie równoległe 15
2.10. Kolory 15
2.10.1. Podstawowe głębokości kolorów 15
2.10.2. Tryb koloru RGBA 15
2.10.3. Tryb z indeksem koloru 16
2.11. Światła i oświetlenia 16
2.11.1. Oświetlenie w OpenGL 16
2.11.2. Model oświetlenia 16
2.11.3. Właściwości materiału 17
2.11.4. Źródła światła 17
2.11.5. Efekty oświetlenia - odbłyski 18
2.11.6. Światła punktowe 18
2.12. Listy wyświetlania 18
2.12.1. Implementacja 18
2.13. Mapowanie tekstur 19
2.13.1. Pliki bitmap 19
2.13.2. Pojęcie teksturowania 19
2.13.3. Definiowanie tekstur 19
2.13.4. Mipmaping 20
2.14. Kwadryki 20
2.14.1. Definiowanie i rysowanie kwadryk 20
2.14.2. Cylindry 21
2.14.3. Dyski 21
2.14.4. Sfery 22
2.14.5. Renderowanie kwadryk 22
3. Ogólne zasady działania engine’a 23
3.1. Wczytywanie danych 23
3.1.1. Pliki *.lev 23
3.1.2. Pliki *.rom 23
3.1.3. Pliki *.dyn 23
3.1.4. Pliki *.ld 23
3.2. Umieszczanie danych w pamięci 23
3.3. Malowanie obiektów w listach wyświetlania 24
3.4. Malowanie sceny 24
3.5. Wycieczka 25
3.6. Przemiszczanie obserwatora 25
3.7. Punkty informacyjne (InfoPoints) 25
3.8. Obsługa klawiatury 26
4. Klasy i moduły 27
4.1. Klasa: CAnimationModule 27
4.1.1. CAnimationModule (int numberOfFrames, bool indep) 28
4.1.2. CAnimationModule (char *fileName) 28
4.1.3. void addFrame(frame *frame_) 30
4.1.4. void start() 30
4.1.5. void reset() 31
4.1.6. void stop() 31
4.1.7. bool finished() 31
4.1.8. void animate() 32
4.1.9. void animate(int delay) 32
4.2. Klasa: CAudioCtrl 34
4.2.1. CAudioCtrl(bool SoundOn) 34
4.2.2. ~CAudioCtrl() 34
4.2.3. Play(char *FileName, bool bLoop, int iMode) 35
4.2.4. Stop(char *FileName) 35
4.2.5. Manage() 36
4.2.6. HandleBackgroundMusic() 36
4.2.7. PlayMenu() 36
4.2.8. PlayTrip() 37
4.2.9. PlayFree() 37
4.2.10. InitBackgroundMusic() 38
4.2.11. StopMenu() 38
4.3. Klasa: CBkgMenuModule 39
4.3.1. CBkgMenuModule (int liczbaObrazow, char *animation, int delay) 39
4.3.2. void addImage(char *fileName) 39
4.3.3. void paint() 40
4.4. Klasa: CCd 41
4.4.1. CCd(char *LevelName) 41
4.4.2. ~CCd() 41
4.4.3. void CreateRoom(int iRoom) 42
4.4.4. void RoomSize(Swall W, bool bMode) 42
4.4.5. void SetTranslation(float *NewTranslation) 43
4.4.6. int min(int a, int b) 43
4.4.7. int max(int a, int b) 44
4.4.8. int GetRoomNumber(float fX, float fZ) 44
4.4.9. void AddObject(SWall W, int iRoom) 45
4.4.10. int isCollision(int X1, int Y1, int X2, int Y2) 45
4.4.11. int isCollision(float xp, float yp, float oxp, float oyp) 46
4.5. Klasa: CObiekt 47
4.5.1. void glMyCube(float size) 47
4.5.2. void glMyCube(float x, float y, float z) 47
4.5.3. void glMyCube(float x, float y, float z, float rozmiarTekstury) 48
4.5.4. void glMyCube(float x, float y, float z, char *Fr, char *Le, char *Pr, char *Go, char *Do, char *Ty, float rozmiarTekstury, bool smudge=false) 48
4.5.5. void glMyKula(float promien, float czescKuli, int rozdzielczoscPionowa, int rozdzielczoscPozioma, bool strona) 49
4.5.6. void glMyRing(float promien, int kat, double rozmiar, int stacks) 50
4.5.7. void glMyWalec(float promien, int kat, float wysokosc, bool podstawa, bool scianyBoczne, int stacks, bool strona) 50
4.5.8. void glMyWalec(float promien, int kat, float wysokosc, bool podstawa, bool scianyBoczne, int poziomZmniejszeniaRozdzielnosci, int stacks, bool strona) 51
4.6. Klasa: CSoundModule 52
4.6.1. CSoundModule *getSoundModule() 52
4.6.2. void play(char *fileName) 53
4.6.3. void play2(char *fileName) 53
4.7. Klasa: CTekst2DModule 54
4.7.1. int init(HDC hDC_, char *fontName, double fontSize_) 54
4.7.2. void PrintString(unsigned int base, char *str, double xPos, double yPos) 54
4.7.3. void PrintLines(int base, char *str, double xPos, double yPos, double vOdl) 55
4.8. Klasa: CTekst3DModule 56
4.8.1. int init(HDC hDC_, char *fontName, double fontDepth) 56
4.8.2. void PrintString(unsigned int base, char *str) 56
4.9. Klasa: CTextHandler 58
4.9.1. CTextHandler(char *filename) 58
4.9.2. ~CTextHandler() 58
4.9.3. char *ReadString(FILE *F) 59
4.9.4. CreateEmptyFile() 59
4.9.5. LoadFromFile() 59
4.9.6. SaveToFile() 60
4.9.7. SetText(int iNumber, char *string) 60
4.9.8. Char *GetText(int iNumber) 61
4.9.9. char * GetFileName() 61
4.10. Klasa: CTextureManager 62
4.10.1. static CTextureManager* getTextureManager() 62
4.10.2. void setMode(int mode) 63
...
nie__dla__acta