OpenGL i wprowadzenie do programowania gier



Podobne dokumenty
Grafika Komputerowa Wykład 4. Synteza grafiki 3D. mgr inż. Michał Chwesiuk 1/30

Spis treści. Wstęp... 11

Grafika, fizyka, metody numeryczne : symulacje fizyczne z wizualizacją 3D / Jacek Matulewski [et al.]. Warszawa, Spis treści.

Grafika Komputerowa Wykład 5. Potok Renderowania Oświetlenie. mgr inż. Michał Chwesiuk 1/38

Transformacje. dr Radosław Matusik. radmat

Plan wykładu. Akcelerator 3D Potok graficzny

PRZEWODNIK PO PRZEDMIOCIE

1. Prymitywy graficzne

2 Przygotował: mgr inż. Maciej Lasota

Dowiedz się, jak tworzyć zapierające dech w piersiach gry 3D i efektowne, trójwymiarowe wizualizacje!

Propozycja szczegółowego rozkładu materiału dla 4-letniego technikum, zakres podstawowy i rozszerzony. Klasa I (90 h)

GRAFIKA CZASU RZECZYWISTEGO Podstawy syntezy grafiki 3D i transformacji geometrycznych

Szczegółowy rozkład materiału dla klasy 3b poziom rozszerzny cz. 1 - liceum

Bartosz Bazyluk SYNTEZA GRAFIKI 3D Grafika realistyczna i czasu rzeczywistego. Pojęcie sceny i kamery. Grafika Komputerowa, Informatyka, I Rok

str 1 WYMAGANIA EDUKACYJNE ( ) - matematyka - poziom podstawowy Dariusz Drabczyk

Rozkład materiału: matematyka na poziomie rozszerzonym

Mechanika ogólna. Kinematyka. Równania ruchu punktu materialnego. Podstawowe pojęcia. Równanie ruchu po torze (równanie drogi)

Grafika Komputerowa Wykład 6. Teksturowanie. mgr inż. Michał Chwesiuk 1/23

83 Przekształcanie wykresów funkcji (cd.) 3

Załącznik KARTA PRZEDMIOTU. KARTA PRZEDMIOTU Wydział Automatyki, Elektroniki i Informatyki, Rok akademicki: 2009/2010 KOMPUTEROWA

Modelowanie i wstęp do druku 3D Wykład 1. Robert Banasiak

MATeMAtyka klasa II poziom rozszerzony

0. OpenGL ma układ współrzędnych taki, że oś y jest skierowana (względem monitora) a) w dół b) w górę c) w lewo d) w prawo e) w kierunku do

GRK 2. dr Wojciech Palubicki

Grafika komputerowa i wizualizacja

MATeMAtyka zakres rozszerzony

Księgarnia PWN: Andrzej Jaskulski - AutoCAD 2010/LT Podstawy projektowania parametrycznego i nieparametrycznego

Wstęp Podstawy Pierwszy program Definiowanie sceny 3D Przekształcenia geometryczne... 47

MATEMATYKA. kurs uzupełniający dla studentów 1. roku PWSZ. w ramach»europejskiego Funduszu Socjalnego« Adam Kolany.

klasa I Dział Główne wymagania edukacyjne Forma kontroli

Symulacje komputerowe

MATeMAtyka zakres podstawowy

Wybrane aspekty teorii grafiki komputerowej - dążenie do wizualnego realizmu. Mirosław Głowacki

Grafika 3D na przykładzie XNA 3.1

Transformacje obiektów 3D

Zagadnienia na egzamin poprawkowy z matematyki - klasa I 1. Liczby rzeczywiste

Przedmiotowe Ocenianie Z Matematyki - Technikum. obowiązuje w roku szkolnym 2016 / 2017

Systemy wirtualnej rzeczywistości. Podstawy grafiki 3D

Wymagania programowe z matematyki na poszczególne oceny w klasie III A i III B LP. Kryteria oceny

MINIMUM PROGRAMOWE DLA SŁUCHACZY CKU NR 1

Julia 4D - raytracing

Wykład 4. Rendering (1) Informacje podstawowe

Równa Równ n a i n e i ru r ch u u ch u po tor t ze (równanie drogi) Prędkoś ędkoś w ru r ch u u ch pros pr t os ol t i ol n i io i wym

Wybrane aspekty teorii grafiki komputerowej - dążenie do wizualnego realizmu. Mirosław Głowacki

Mechanika Teoretyczna Kinematyka

PRZYDATNE WZORY SYMBOLE PUNKTY I LINIE

GLKit. Wykład 10. Programowanie aplikacji mobilnych na urządzenia Apple (IOS i ObjectiveC) #import "Fraction.h" #import <stdio.h>

Rozdział VII. Przekształcenia geometryczne na płaszczyźnie Przekształcenia geometryczne Symetria osiowa Symetria środkowa 328

ZAKRES PODSTAWOWY. Proponowany rozkład materiału kl. I (100 h)

Mobilne Aplikacje Multimedialne

Rozkład materiału KLASA I

Dział Rozdział Liczba h

Propozycja szczegółowego rozkładu materiału dla 4-letniego technikum, zakres podstawowy. Klasa I (60 h)

GRK 4. dr Wojciech Palubicki

Mechanika ogólna / Tadeusz Niezgodziński. - Wyd. 1, dodr. 5. Warszawa, Spis treści

Badanie ruchu złożenia

Ćwiczenia nr 4. TEMATYKA: Rzutowanie

Trójwymiarowa grafika komputerowa rzutowanie

Spis treści CZĘŚĆ I. NIEPARAMETRYCZNE PROJEKTOWANIE 2D...31

Animowana grafika 3D. Opracowanie: J. Kęsik.

Śledzenie promieni w grafice komputerowej

1.1. Rachunek zdań: alternatywa, koniunkcja, implikacja i równoważność zdań oraz ich zaprzeczenia.

Podstawy Informatyki Wykład V

ROZKŁAD MATERIAŁU NAUCZANIA KLASA 2, ZAKRES PODSTAWOWY

Pakiet edukacyjny do nauki przedmiotów ścisłych i kształtowania postaw przedsiębiorczych

Planimetria 1 12 godz.

Matematyka do liceów i techników Szczegółowy rozkład materiału Zakres podstawowy

Temat: Transformacje 3D

Zatem standardowe rysowanie prymitywów wygląda następująco:

Synteza i obróbka obrazu. Tekstury. Opracowanie: dr inż. Grzegorz Szwoch Politechnika Gdańska Katedra Systemów Multimedialnych

Lista działów i tematów

Zadanie polega na zbudowaniu i wyświetleniu przykładowej animowanej sceny przedstawiającej robota spawalniczego typu PUMA.

Ustawienia materiałów i tekstur w programie KD Max. MTPARTNER S.C.

Krzyżówka oraz hasła do krzyżówki. Kalina R., Przewodnik po matematyce dla klas VII-VIII, część IV, SENS, Poznań 1997, s

Przykłady oprogramowania wykorzystujacego Qt

RENDERING W CZASIE RZECZYWISTYM. Michał Radziszewski

Oświetlenie obiektów 3D

Programowanie gier komputerowych Tomasz Martyn Wykład 6. Materiały informacje podstawowe

Programowanie gier 3D w HTML5. Andrzej P.Urbański Politechnika Poznańska

Wymagania edukacyjne z matematyki

Rozszerzony konspekt preskryptu do przedmiotu Podstawy Robotyki

Wybrane aspekty teorii grafiki komputerowej - dążenie do wizualnego realizmu. Mirosław Głowacki

Animowana grafika 3D. Opracowanie: J. Kęsik.

3 Przygotował: mgr inż. Maciej Lasota

Spis treści. Przedmowa... 7

3. KINEMATYKA Kinematyka jest częścią mechaniki, która zajmuje się opisem ruchu ciał bez wnikania w jego przyczyny. Oznacza to, że nie interesuje nas

1 Wstęp teoretyczny. Temat: Manipulowanie przestrzenią. Grafika komputerowa 3D. Instrukcja laboratoryjna Układ współrzędnych

Spis treści. Przedmowa do wydania piątego

4. Oprogramowanie OCR do rozpoznawania znaków 39

Propozycja szczegółowego rozkładu materiału dla 4-letniego technikum

Matematyka do liceów i techników Szczegółowy rozkład materiału Klasa III zakres rozszerzony 563/3/2014

RAMOWY ROZKŁAD MATERIAŁU Z MATEMATYKI DLA KLAS I-III LICEUM OGÓLNOKSZTAŁCĄCEGO PRZY CKU NR 1

Plan wynikowy z matematyki kl.i LO

Program zajęć pozalekcyjnych z matematyki poziom rozszerzony- realizowanych w ramach projektu Przez naukę i praktykę na Politechnikę

1. Czym jest rendering? a. Komputerowa analiza modelu danej sceny i utworzenie na jej podstawie obrazu 2D. b. Funkcja umożliwiająca kopiowanie obrazu

MATEMATYKA ZP Ramowy rozkład materiału na cały cykl kształcenia

Wykład Ćwiczenia Laboratorium Projekt Seminarium Liczba godzin zajęć zorganizowanych w Uczelni 30 30

ECDL/ICDL CAD 2D Moduł S8 Sylabus - wersja 1.5

Matematyka do liceów i techników Szczegółowy rozkład materiału Klasa III zakres rozszerzony

Zaawansowany kurs języka Python

Transkrypt:

OpenGL i wprowadzenie do programowania gier

Wojciech Sterna Bartosz Chodorowski OpenGL i wprowadzenie do programowania gier

Autorstwo rozdziałów: 1, 2, 3, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14 Wojciech Sterna 4, 15, 16 Bartosz Chodorowski Redakcja: Teresa Karasińska Korekta merytoryczna: Bartłomiej Prędki Projekt okładki: Marcin Ziółkowski Skład: PanDawer (www.pandawer.pl) Copyright 2008 by Wojciech Sterna & Bartosz Chodorowski Wydawnictwo NAKOM ul. Wielka 10 61 774 Poznań tel./fax 061 852 83 82 tel. 061 852 97 47 e mail:wydawnictwo@nakom.com.pl www.nakom.com.pl ISBN 978 83 89529 49 7 Druk cyfrowy i oprawa: SOWA druk na życzenie tel. 022 431 81 40 www.sowadruk.pl

Spis treści Podziękowania... 11 Wstęp... 11 ROZDZIAŁ 1. Wstęp do programowania gier... 13 1.1. Świat gier... 13 1.2. Czym jest OpenGL... 14 1.3. Elementy gry... 14 1.3.1. Rendering... 15 1.3.2. Dźwięk i muzyka... 16 1.3.3. Urządzenia wejścia... 16 1.3.4. Sieć... 16 1.3.5. Mechanika... 16 1.3.6. Sztuczna inteligencja... 17 1.3.7. Matematyka i fi zyka... 17 1.4. Podstawowe pojęcia... 17 1.4.1. Kolory i RGB... 18 1.4.2. Podwójne buforowanie... 19 1.5. Typy danych w OpenGL-u... 19 Podsumowanie... 20 Rozdział 2. Podstawy WinAPI i szkielet aplikacji OpenGL... 21 2.1. WinAPI... 21 2.1.1. Jak działają aplikacje Windows... 22 2.1.2. Funkcja WinMain i najprostsza aplikacja Windows... 23 2.1.3. Rejestrowanie klasy okna, tworzenie i wyświetlanie... 24 2.1.4. Pętla przetwarzania komunikatów... 27 2.1.5. Funkcja przetwarzania komunikatów... 28 2.1.6. Pełen kod źródłowy aplikacji Windows... 29 2.1.7. Kontrolki... 30 2.1.8. Zegary... 32 2.1.9. Funkcje GDI... 34 2.1.10. Wątki... 37 2.2. OpenGL... 39 2.2.1. Standardowa aplikacja WinAPI raz jeszcze... 39 2.2.2. Format pikseli... 40 2.2.3. Funkcje WGL... 41 2.2.4. Tryb pełnoekranowy... 42 2.2.5. Kompletujemy szkielet... 43 2.2.6. Pełen kod aplikacji OpenGL... 46 Podsumowanie... 51 Rozdział 3. Matematyka... 52 3.1. Trygonometria... 52 3.1.1. Trójkąt prostokątny a funkcje trygonometryczne... 53 3.1.2. Wykresy funkcji trygonometrycznych... 54 3.1.3. Funkcje odwrotne do trygonometrycznych arcusy... 56 3.1.4. Liczenie kątów... 57 3.1.5. Kartezjański i biegunowy układ współrzędnych... 57 3.1.6. Związki między funkcjami trygonometrycznymi dowolnego kąta... 60 3.1.7. Wzory redukcyjne... 62 3.1.8. Miara łukowa kąta radian... 64 3.1.9. Praktyczne wykorzystanie funkcji trygonometrycznych... 66 3.1.9.1. Ruch falisty... 66

3.1.9.2. Ruch po okręgu... 67 3.1.9.3. Poruszanie à la GTA2... 68 3.1.10. Zadania... 71 3.2. Wektory... 72 3.2.1. Zapis wektorów... 72 3.2.2. Otrzymywanie wektorów... 73 3.2.3. Dodawanie wektorów... 74 3.2.4. Odejmowanie wektorów... 74 3.2.5. Mnożenie wektora przez skalar... 75 3.2.6. Normalizacja wektora... 76 3.2.7. Iloczyn skalarny wektorów... 76 3.2.8. Iloczyn wektorowy wektorów... 78 3.2.9. Wektor normalny powierzchni... 79 3.2.10. Wektory równoległe... 80 3.2.11. Wektory prostopadłe... 81 3.2.12. Wzory na otrzymanie konkretnych wektorów... 81 3.2.12.1. Wektor odbity... 81 3.2.12.2. Wektor prędkości po kolizji... 82 3.2.13. Zadania... 83 3.3. Macierze... 83 3.3.1. Zapis macierzy... 84 3.3.2. Dodawanie i odejmowanie macierzy... 84 3.3.3. Mnożenie macierzy... 85 3.3.4. Macierz tożsamościowa... 86 3.3.5. Macierz transponowana... 86 3.3.6. Transformacje... 87 3.3.6.1. Macierz translacji (przemieszczenia)... 87 3.3.6.2. Macierz skalowania... 88 3.3.6.3. Macierz rotacji (obrotu)... 88 3.3.7. Słów kilka o porządkach kolumnowym i wierszowym... 89 3.3.8. Składanie przekształceń... 91 3.3.9. Zadania... 93 Podsumowanie... 94 Rozdział 4. Fizyka... 95 4.1. Mechanika klasyczna... 96 4.1.1. Ruch i jego rodzaje... 96 4.1.2. Ruch jednostajny prostoliniowy... 97 4.1.3. Ruch jednostajnie przyspieszony... 98 4.1.4. Siły... 99 4.1.5. Asteroidy przykładowa gra... 103 4.1.6. Opór... 103 4.1.7. Siła grawitacji... 104 4.1.8. Fizyka sprężyny... 107 4.2. Ruch obrotowy, mechanika bryły sztywnej... 109 4.2.1. Ruch po okręgu... 109 4.2.2. Bryła sztywna... 111 4.2.3. Fizyka liny... 112 4.2.4. Błąd w przykładzie lina... 115 Podsumowanie... 116 Rozdział 5. Renderowanie w 3D... 117 5.1. Prymitywy... 117 5.1.1. Punkty... 117 5.1.1.1. Rozmiar... 120 5.1.1.2. Antialiasing... 121 5.1.2. Linie... 122

5.1.2.1. Łamane i łamane zamknięte... 122 5.1.2.2. Wzorcowe... 123 5.1.2.3. Szerokość... 124 5.1.2.4. Antialiasing... 124 5.1.3. Wielokąty... 125 5.1.3.1. Wypełnianie wzorem... 126 5.1.3.2. Cieniowanie... 127 5.1.3.3. Tryby wypełniania... 128 5.1.3.4. Widoczność... 129 5.1.3.5. Ukrywanie krawędzi... 130 5.1.3.6. Reguły konstruowania... 130 5.1.4. Trójkąty... 131 5.1.4.1. Listy trójkątów... 131 5.1.4.2. Paski trójkątów... 132 5.1.4.3. Wachlarze trójkątów... 133 5.1.5. Czworokąty... 135 5.1.5.1. Paski czworokątów... 136 5.2. Kwadryki... 137 5.2.1. Tworzenie i zwalnianie... 137 5.2.2. Funkcje związane z kwadrykami... 137 5.2.3. Dyski... 138 5.2.4. Cylindry... 139 5.2.5. Sfery... 139 5.2.6. Uwagi odnośnie optymalizacji kwadryk... 140 Podsumowanie... 140 Rozdział 6. Manipulowanie przestrzenią... 141 6.1. Układ współrzędnych... 141 6.2. Rzutowanie... 142 6.2.1. Rzutowanie perspektywiczne... 143 6.2.2. Rzutowanie ortogonalne... 144 6.3. Kamera... 146 6.4. Macierz projekcji (rzutowania) i modelowania... 146 6.5. Przekształcenia... 148 6.5.1. Translacja... 149 6.5.2. Skalowanie... 150 6.5.3. Rotacja... 151 6.5.4. Aplikacja układ słoneczny... 152 6.6. Stosy macierzy... 153 6.7. Funkcje macierzowe OpenGL... 154 6.7.1. Pobieranie stanu macierzy... 154 6.7.2. Mnożenie macierzy... 156 6.7.3. Ładowanie macierzy... 157 6.8. Inny opis położenia i orientacji obiektu... 159 6.9. Ręczne przekształcanie wierzchołków... 163 Podsumowanie... 165 Rozdział 7. Materiały i oświetlenie... 166 7.1. W teorii... 166 7.1.1. Otoczenie... 167 7.1.2. Rozproszenie... 167 7.1.3. Odbicie (połysk)... 168 7.1.4. Obliczanie natężenia oświetlenia... 168 7.1.5. Wektory normalne... 168 7.2. Materiały... 169 7.2.1. Otoczenie... 169 7.2.2. Rozproszenie... 169

7.2.3. Otoczenie i rozproszenie... 169 7.2.4. Odbicie... 169 7.2.5. Emisja... 170 7.2.6. Śledzenie materiału... 170 7.3. Oświetlenie... 171 7.3.1. Otoczenie... 171 7.3.2. Rozproszenie... 171 7.3.3. Odbicie... 171 7.3.4. Pozycja... 171 7.3.5. Refl ektor... 172 7.3.6. Tłumienie... 172 7.3.7. Konfi guracja modelu oświetlenia... 173 7.4. Aplikacja pomieszczenie... 173 7.5. Ręczne obliczanie oświetlenia per-vertex... 178 7.5.1. Model płaski... 178 7.5.2. Model płynny... 180 Podsumowanie... 182 Rozdział 8. Bitmapy i teksturowanie... 183 8.1. Bitmapy... 183 8.1.1. Struktura bitmapy i ładowanie z pliku... 183 8.1.2. Funkcje bitmapowe... 187 8.1.2.1. Przemieszczanie rastra... 187 8.1.2.2. Wykreślanie pikseli... 188 8.1.2.3. Odczytywanie pikseli... 188 8.1.2.4. Kopiowanie pikseli... 189 8.1.2.5. Skalowanie obrazu... 190 8.1.2.6. Rysowanie prawdziwej bitmapy... 190 8.2. Teksturowanie... 191 8.2.1. Funkcje operujące na teksturach... 191 8.2.1.1. Tworzenie, zwalnianie i wybieranie obiektów tekstur... 192 8.2.1.2. Tworzenie obrazów tekstur... 193 8.2.1.3. Filtrowanie tekstur... 195 8.2.1.4. Współrzędne tekstur... 198 8.2.1.5. Środowisko tekstur... 201 8.2.2. Aplikacja oteksturowany sześcian... 201 8.2.3. Macierz tekstury... 204 8.2.4. Teksturowanie kwadryk... 206 Podsumowanie... 207 Rozdział 9. Optymalizacja... 208 9.1. Listy wyświetlania... 208 9.1.1. Funkcje operujące na listach wyświetlania... 208 9.1.1.1. Tworzenie i usuwanie list... 209 9.1.1.2. Umieszczanie poleceń na listach... 209 9.1.1.3. Wykonywanie list... 2 1 1 9.1.2. Przykład wykorzystania... 212 9.2. Tablice wierzchołków... 214 9.2.1. Funkcje operujące na tablicach wierzchołków... 214 9.2.1.1. Włączanie i wyłączanie tablic... 214 9.2.1.2. Przypisywanie danych do tablic... 215 9.2.1.3. Renderowanie z użyciem tablic... 217 9.2.2. Przykład wykorzystania... 218 Podsumowanie... 222 Rozdział 10. Wbudowane mechanizmy OpenGL... 223 10.1. Tekst... 223

10.2. Mgła... 226 10.3. Bufor głębi... 229 10.4. Blending... 231 10.4.1. Przezroczystość... 233 10.4.2. Mapy świetlne... 235 10.4.3. Wielokrotne mapy świetlne... 239 10.5. Testowanie alfa... 241 10.6. Cięcie... 246 10.6.1. Nożyczki... 246 10.6.2. Płaszczyzny tnące... 247 10.7. Bufor szablonu... 248 10.8. Mapowanie współrzędnych... 253 10.8.1. Obiekt na okno... 254 10.8.2. Okno na obiekt... 255 Podsumowanie... 256 Rozdział 11. Modele 3D... 257 11.1. W teorii... 257 11.2. Format opisu sceny *.ase programu 3ds max... 258 11.3. Implementacja... 263 11.4. Słów kilka o animacji... 269 Podsumowanie... 270 Rozdział 12. Sposoby wykrywania kolizji... 272 12.1. Czworokąt... 272 12.2. Okrąg... 274 12.3. Równanie prostej... 277 12.4. Punkt w wielokącie... 281 12.5. Poruszanie po nierównym terenie... 283 12.5.1. Interpolacja... 284 12.5.2. Równanie płaszczyzny... 288 Podsumowanie... 291 Rozdział 13. Przykładowy świat małe podsumowanie... 292 13.1. Kamera... 294 13.2. Teren... 297 13.3. Woda... 307 13.4. Mgła... 312 13.5. Obiekty... 313 13.6. Deszcz... 319 13.7. FPS... 326 13.8. Co jeszcze można poprawić... 329 Podsumowanie... 331 Rozdział 14. Dźwięk przestrzenny OpenAL... 332 14.1. Inicjalizacja i fi nalizacja... 333 14.2. Obiekty... 334 14.2.1. Bufory... 334 14.2.1.1. Tworzenie i usuwanie... 335 14.2.1.2. Ładowanie plików *.wav... 335 14.2.2. Źródła... 336 14.2.2.1. Tworzenie i usuwanie... 336 14.2.2.2. Funkcje operujące na źródłach... 336 14.2.2.3. Parametry... 337 14.2.3. Słuchacz... 338 14.2.3.1. Parametry... 338 14.3. Modele dystansu... 339

14.4. Przykładowa aplikacja... 339 14.4.1. Kamera... 339 14.4.2. Funkcje pomocnicze... 342 14.4.3. Program główny... 345 Podsumowanie... 350 Rozdział 15. Sieć... 351 15.1. Podstawy programowania sieciowego... 352 15.2. Czego potrzebujemy, by zaimplementować sieć?... 355 15.3. TCP czy UDP?... 356 15.4. Implementacja sieci za pomocą surowych gniazd i WinSock... 358 15.4.1. Struktury danych... 359 15.4.2. Funkcje do manipulacji adresami IP... 360 15.4.3. Konieczne funkcje... 362 15.4.4. Przykłady programów sieciowych opartych na TCP... 365 15.4.5. Przykłady programów sieciowych opartych na UDP... 371 15.5. Słów kilka o grach czasu rzeczywistego... 374 15.6. Pong przykładowa gra sieciowa... 375 Podsumowanie... 384 Rozdział 16. SDL... 385 16.1. Inicjowanie obrazu... 386 16.2. Główna pętla programu i przechwytywanie zdarzeń... 387 16.2.1. Obsługa klawiatury... 389 16.2.2. Obsługa myszki... 390 16.3. Przechwytywanie czasu... 392 16.4. Wątki... 393 16.5. SDL i OpenGL szkielet aplikacji... 394 16.6. SDL_net sieć w SDL... 398 16.6.1. Typy... 398 16.6.2. Funkcje... 399 Podsumowanie... 403 Dodatek A. Konfi guracja SDL... 404 Windows... 404 Visual C++ 6... 404 Code Blocks 1.0rc2... 405 Linux... 405 Makra i kompilacja warunkowa... 406 Dodatek B. Rozwiązania zadań z rozdziału 3.... 407 Funkcje trygonometryczne... 407 Wektory... 409 Macierze... 411 Dodatek C. Tablica wartości funkcji trygonometrycznych... 413 Zakończenie... 414 Linki... 414