opengl. programowanie gier scan.pdf

(8123 KB) Pobierz
888911898.001.png
6
OpenGL. Programowanie gier
Rejestracja klasy ..................................................................................................... 48
Tworzenia okna ...................................................................................................... 48
Ptla przetwarzania komunikatów............................................................................. 50
Kompletna aplikacja systemu Windows..................................................................... 52
Wprowadzenie do funkcji WGL..................................................................................... 55
Kontekst tworzenia grafiki ....................................................................................... 56
Korzystanie z funkcji WGL...................................................................................... 56
Funkcja wglCreateContext() ...............................................................................56
Funkcja wglDeleteContext() ...............................................................................56
Funkcja wglMakeCurrent().................................................................................57
Formaty pikseli ............................................................................................................. 58
Pole nSize............................................................................................................... 58
Pole dwFlags .......................................................................................................... 59
Pole iPixelType....................................................................................................... 59
Pole cColorBits....................................................................................................... 59
Aplikacja OpenGL w systemie Windows......................................................................... 60
Pełnoekranowe aplikacje OpenGL.................................................................................. 67
Podsumowanie.............................................................................................................. 69
Rozdział 3. Przegl'd teorii grafiki trójwymiarowej.....................................................71
Skalary, punkty i wektory .............................................................................................. 71
Długo=D wektora ..................................................................................................... 72
Normalizacja wektora.............................................................................................. 72
Dodawanie wektorów .............................................................................................. 73
MnoEenie wektora przez skalar................................................................................. 73
Iloczyn skalarny wektorów....................................................................................... 73
Iloczyn wektorowy.................................................................................................. 74
Macierze ...................................................................................................................... 75
Macierz jednostkowa............................................................................................... 75
Macierz zerowa....................................................................................................... 75
Dodawanie i odejmowanie macierzy ......................................................................... 76
MnoEenie macierzy.................................................................................................. 76
Implementacja działaF na macierzach........................................................................ 78
Przekształcenia ............................................................................................................. 79
Przesunicie............................................................................................................ 80
Obrót ..................................................................................................................... 80
Skalowanie ............................................................................................................. 82
Rzutowanie................................................................................................................... 82
Rzutowanie izometryczne......................................................................................... 83
Rzutowanie perspektywiczne.................................................................................... 84
Obcinanie..................................................................................................................... 86
wiatło.........................................................................................................................86
wiatło otoczenia .................................................................................................... 87
wiatło rozproszone ................................................................................................ 87
wiatło odbijane...................................................................................................... 88
Odwzorowania tekstur................................................................................................... 88
Podsumowanie.............................................................................................................. 89
Cz II Korzystanie z OpenGL............................................................91
Rozdział 4. Maszyna stanów OpenGL i podstawowe elementy grafiki.........................93
Funkcje stanu ............................................................................................................... 93
Podstawowe elementy grafiki......................................................................................... 99
Tworzenie punktów w trójwymiarowej przestrzeni................................................... 100
Zmiana rozmiaru punktów................................................................................ 101
Antialiasing..................................................................................................... 101
Spis treci
7
Odcinki ................................................................................................................ 102
Zmiana szeroko=ci odcinka............................................................................... 103
Antialiasing odcinków...................................................................................... 103
Wzór linii odcinka ........................................................................................... 103
WielokHty............................................................................................................. 104
Ukrywanie powierzchni wielokHtów.................................................................. 105
Ukrywanie krawdzi wielokHtów....................................................................... 106
Antialiasing wielokHtów ................................................................................... 106
Wzór wypełnienia wielokHtów .......................................................................... 107
TrójkHty.......................................................................................................... 107
CzworokHty..................................................................................................... 108
Dowolne wielokHty .......................................................................................... 109
Przykład wykorzystania podstawowych elementów grafiki........................................ 109
Podsumowanie............................................................................................................ 110
Rozdział 5. Przekształcenia układu współrz.dnych i macierze OpenGL.....................111
Przekształcenia układu współrzdnych.......................................................................... 111
Współrzdne kamery i obserwatora......................................................................... 113
Przekształcenia widoku.......................................................................................... 114
Wykorzystanie funkcji gluLookAt() .................................................................. 114
Wykorzystanie funkcji glRotate*() i glTranslate*().............................................115
Własne procedury przekształceF widoku............................................................ 116
Przekształcenia modelowania ................................................................................. 117
Rzutowanie........................................................................................................... 118
Przekształcenie okienkowe..................................................................................... 118
OpenGL i macierze ..................................................................................................... 119
Macierz modelowania............................................................................................ 119
Przesunicie.......................................................................................................... 120
Obrót ................................................................................................................... 120
Skalowanie ........................................................................................................... 122
Stos macierzy........................................................................................................ 123
Model robota ........................................................................................................ 124
Rzutowanie................................................................................................................. 132
Rzutowanie ortograficzne....................................................................................... 133
Rzutowanie perspektywiczne.................................................................................. 134
Okno widoku ........................................................................................................ 135
Przykład rzutowania .............................................................................................. 136
Wykorzystanie własnych macierzy przekształceF........................................................... 138
Ładowanie elementów macierzy ............................................................................. 138
MnoEenie macierzy................................................................................................ 139
Przykład zastosowania macierzy definiowanych....................................................... 139
Podsumowanie............................................................................................................ 140
Rozdział 6. Kolory, ł'czenie kolorów i o1wietlenie..................................................141
Czym sH kolory? ......................................................................................................... 141
Kolory w OpenGL ...................................................................................................... 142
Głbia koloru ........................................................................................................ 143
Sze=cian kolorów................................................................................................... 143
Model RGBA w OpenGL ...................................................................................... 143
Model indeksowany w OpenGL.............................................................................. 144
Cieniowanie................................................................................................................ 145
O=wietlenie................................................................................................................. 147
O=wietlenie w OpenGL i w realnym =wiecie............................................................ 147
Materiały.............................................................................................................. 148
8
OpenGL. Programowanie gier
Normalne.............................................................................................................. 148
Obliczanie normalnych..................................................................................... 149
UEycie normalnych .......................................................................................... 151
Normalne jednostkowe..................................................................................... 152
Korzystanie z o=wietlenia w OpenGL...................................................................... 153
Tworzenie Jródeł =wiatła.................................................................................. 158
PołoEenie Jródła =wiatła ................................................................................... 159
Tłumienie........................................................................................................ 160
StrumieF =wiatła .............................................................................................. 160
Definiowanie materiałów.................................................................................. 163
Modele o=wietlenia .......................................................................................... 164
Efekty odbicia ................................................................................................. 166
Ruchome Jródła =wiatła.................................................................................... 167
ŁHczenie kolorów........................................................................................................ 173
Przezroczysto=D .................................................................................................... 174
Podsumowanie............................................................................................................ 179
Rozdział 7. Mapy bitowe i obrazy w OpenGL...........................................................181
Mapy bitowe w OpenGL ............................................................................................. 181
Umieszczanie map bitowych .................................................................................. 182
Rysowanie mapy bitowej ....................................................................................... 183
Przykład zastosowania mapy bitowej ...................................................................... 183
Wykorzystanie obrazów graficznych............................................................................. 185
Rysowanie obrazów graficznych............................................................................. 185
Odczytywanie obrazu z ekranu............................................................................... 187
Kopiowanie danych ekranu .................................................................................... 187
Powikszanie, pomniejszanie i tworzenie odbiD........................................................ 188
Upakowanie danych mapy pikseli................................................................................. 188
Mapy bitowe systemu Windows ................................................................................... 188
Format plików BMP.............................................................................................. 189
Ładowanie plików BMP ........................................................................................ 190
Zapis obrazu w pliku BMP..................................................................................... 191
Pliki graficzne Targa ................................................................................................... 193
Format plików Targa ............................................................................................. 193
Ładowanie zawarto=ci pliku Targa.......................................................................... 194
Zapis obrazów w plikach Targa .............................................................................. 196
Podsumowanie............................................................................................................ 197
Rozdział 8. Odwzorowania tekstur .........................................................................199
Odwzorowania tekstur................................................................................................. 199
Przykład zastosowania tekstury .............................................................................. 200
Mapy tekstur .............................................................................................................. 205
Tekstury dwuwymiarowe....................................................................................... 205
Tekstury jednowymiarowe ..................................................................................... 206
Tekstury trójwymiarowe ........................................................................................ 206
Obiekty tekstur ........................................................................................................... 207
Tworzenie nazwy tekstury ..................................................................................... 207
Tworzenie i stosowanie obiektów tekstur................................................................. 207
Filtrowanie tekstur ...................................................................................................... 208
Funkcje tekstur........................................................................................................... 209
Współrzdne tekstury .................................................................................................. 209
Powtarzanie i rozciHganie tekstur............................................................................ 210
Mipmapy i poziomy szczegółowo=ci............................................................................. 212
Automatyczne tworzenie mipmap ........................................................................... 213
Spis treci
9
Animacja powiewajHcej flagi........................................................................................ 213
Obja=nienia........................................................................................................... 214
Implementacja....................................................................................................... 214
Ukształtowanie terenu ................................................................................................. 223
Obja=nienia........................................................................................................... 223
Implementacja....................................................................................................... 227
Podsumowanie............................................................................................................ 235
Rozdział 9. Zaawansowane odwzorowania tekstur..................................................237
Tekstury wielokrotne................................................................................................... 237
Sprawdzanie dostpno=ci tekstur wielokrotnych ....................................................... 238
Dostp do funkcji rozszerzeF.................................................................................. 239
Tworzenie jednostek tekstury................................................................................. 240
Okre=lanie współrzdnych tekstury ......................................................................... 241
Przykład zastosowania tekstur wielokrotnych........................................................... 242
Odwzorowanie otoczenia ............................................................................................. 250
Torus na niebie...................................................................................................... 250
Macierze tekstur.......................................................................................................... 253
Mapy o=wietlenia ........................................................................................................ 255
Stosowanie map o=wietlenia................................................................................... 255
Wieloprzebiegowe tekstury wielokrotne........................................................................ 261
Podsumowanie............................................................................................................ 265
Rozdział 10. Listy wy1wietlania i tablice wierzchołków.............................................267
Listy wy=wietlania....................................................................................................... 267
Tworzenie listy wy=wietlania.................................................................................. 268
Umieszczanie poleceF na li=cie wy=wietlania........................................................... 268
Wykonywanie list wy=wietlania.............................................................................. 269
Uwagi dotyczHce list wy=wietlania.......................................................................... 271
Usuwanie list wy=wietlania .................................................................................... 271
Listy wy=wietlania i tekstury .................................................................................. 272
Przykład: animacja robota z uEyciem list wy=wietlania ............................................. 273
Tablice wierzchołków.................................................................................................. 274
Obsługa tablic wierzchołków w OpenGL................................................................. 275
Stosowanie tablic wierzchołków ............................................................................. 276
glDrawArrays() ............................................................................................... 278
glDrawElements()............................................................................................ 278
glDrawRangeElements()................................................................................... 279
glArrayElement()............................................................................................. 279
Tablice wierzchołków i tekstury wielokrotne ........................................................... 280
Blokowanie tablic wierzchołków ............................................................................ 280
Przykład: ukształtowanie terenu po raz drugi............................................................ 281
Podsumowanie............................................................................................................ 284
Rozdział 11. Wy1wietlanie tekstów..........................................................................285
Czcionki rastrowe ....................................................................................................... 285
Czcionki konturowe .................................................................................................... 289
Czcionki pokryte teksturH ............................................................................................ 292
Podsumowanie............................................................................................................ 299
Rozdział 12. Bufory OpenGL.....................................................................................301
Bufory OpenGL — wprowadzenie................................................................................ 301
Konfiguracja formatu pikseli .................................................................................. 301
OpróEnianie buforów............................................................................................. 304
Bufor koloru............................................................................................................... 305
Podwójne buforowanie .......................................................................................... 305
Buforowanie stereoskopowe................................................................................... 306
Zgłoś jeśli naruszono regulamin