Pobieranie prezentacji. Proszę czekać

Pobieranie prezentacji. Proszę czekać

3dMatchGL Wykorzystanie biblioteki graficznej OpenGL przy tworzeniu gry 3DMatchGL.

Podobne prezentacje


Prezentacja na temat: "3dMatchGL Wykorzystanie biblioteki graficznej OpenGL przy tworzeniu gry 3DMatchGL."— Zapis prezentacji:

1 3dMatchGL Wykorzystanie biblioteki graficznej OpenGL przy tworzeniu gry 3DMatchGL

2 Struktura programu: a) szablon w C++Builder, b) komponent TOpenGLAPPanel, c) silnik ładujący modele *.ASE, d) silnik gry – grafika OpenGL, e) silnik gry – fizyka, f) dźwięk – biblioteka FMOD.

3 Komponent TOpenGLAPPanel:
Typowy komponent typu panel. Nie ma co prawda dokumentacji, ale tutoriale i nazwy właściwości mówią same za siebie w większości przypadków. Jedyne o czym należałoby wspomnieć, to inicjacja, moment zmiany rozmiaru panelu oraz to, co należałoby wykonać przed narysowaniem każdej klatki (co w większości pokrywa się z samym OpenGL, ale wydaje się należeć do standardu).

4 Inicjacja: Zdarzenie OnInit Typ wypełniania gładki
glShadeModel(GL_SMOOTH); glClearColor(0.0f, 0.0f, 0.0f, 0.5f); glClearDepth(1.0f); glEnable(GL_DEPTH_TEST); glDepthFunc(GL_LEQUAL); glHint(GL_PERSPECTIVE_CORRECTION_HINT, GL_NICEST); Ustawienie koloru czyszczenia To samo dla bufora Z Uaktywnienie testu głębi przy rysowaniu Ustawienie funkcji dla testu głębi Ustawienie parametru obliczania perspektywy na najlepszy

5 Zmiana rozmiaru panelu:
Zdarzenie OnResize Zapobieganie dzieleniu przez zero (patrz gluPerspective w OnPaint) if (OpenGLAPPanel1->Height==0) OpenGLAPPanel1->Height=1; glViewport(0,0,OpenGLAPPanel1->Width,OpenGLAPPanel1->Height); Ustawienie okna, w którym ma być rysowane

6 Rysowanie jednej klatki animacji:
Zdarzenie OnPaint Czyszczenie bufora kolorów i głębi glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); glMatrixMode(GL_PROJECTION); glLoadIdentity(); gluPerspective(45, (GLfloat)OpenGLAPPanel1->Width / (GLfloat)OpenGLAPPanel1->Height, 0.01f, f); gluLookAt(0,-10,10,0,0,0,0,0,1); glMatrixMode(GL_MODELVIEW); ... glFinish(); Tryb macierzy projekcyjnej Ładowanie macierzy jednostkowej Ustaw perspektywę – kąt, aspekt i zakres dystansu rysowania Ustaw pozycję, cel i wektor pionu kamery Tryb macierzy modeli (służy do rysowania) Tutaj odbywa się rysowanie obiektów gry Nakaz czekania przed rysowaniem następnej klatki do zakończenia aktualnej

7 Relacja OpenGL - Panel:
TOpenGLAPPanel stanowi łącznik, między programistą, a biblioteką OpenGL. Wykonuje wszystkie operacje konfiguracji, zmiany buforów itp. za nas. Dba o to, aby w kazdym momencie OpenGL rysował w wyznaczonym dla niego miejscu – w panelu. W tym samym czasie mamy możliwość wydawania poleceń bezpośrednio bibliotece, więc komponent ten w żaden sposób nas nie ogranicza. Przy większej ilości paneli, należy jeszcze przed narysowaniem ustalić, które okienko jest aktywnym. Służy do tego odpowiednia metoda komponentu.

8 Silnik gry – grafika OpenGL:
a) tworzenie obiektu, b) modyfikacja obiektu.

9 Tworzenie obiektu: Blok glBegin / glEnd
Rozpoczęcie bloku definiującego obiekt glBegin( TYP ); ... glEnd(); Rozpoczęcie bloku musi być równoczesne z definicją typu strumieniowanego obiektu. Mogą to być punkty (GL_POINTS), linie (GL_LINES), trójkąty (GL_TRIANGLES) i pochodne tych typów. Strumieniowe definiowanie wierzchołków Zakończenie bloku definiującego obiekt

10 Tworzenie obiektu: Strumień wierzchołków
Dla każdego wierzchołka należy podać jego definicję Określenie koloru wierzchołka (i ewentualnie jego przeźroczystości) [ glColor( parametry ) ] [ glTexCoords( parametry )] glVertex( parametry ) Określenie koordynatów tekstury (jeżeli obiekt jest teksturowany) Określenie położenia wierzchołka w przestrzeni każda z tych funkcji występuje w najróżniejszych odmianach (zmienna liczba parametrów, typów danych itp...).

11 Tworzenie obiektu: Przykład glBegin( GL_TRIANGLES );
glColor3f( 1,0,0 ); glVertex3f( -1,0,0 ); glColor3f( 0,1,0 ); glVertex3f( 0,1,0 ); glColor3f( 0,0,1 ); glVertex3f( 1,0,0 ); glEnd(); Rysuje trójkąt o rogach w kolorach (r,g,b) kolejno czerwonym, zielonym i niebieskim i wierzchołkach kolejno w (x,y,z): [-1,0,0 ]->[0,1,0]->[1,0,0]

12 Modyfikacja obiektu: Funkcje
Aby tak utworzony obiekt zmodyfikować,czyli obrócić, przesunąć czy przeskalować, należy wszystkie te operacje wykonać w odwrotnej kolejności: ... glBegin(...); glEnd(); Funkcje przekształcające Definicja obiektu

13 Modyfikacja obiektu: Funkcje
Ładowanie macierzy jednostkowej (identyczność przekształcenia) glLoadIdentity(); glTranslate glRotate glScale Funkcja przemieszczenia Funkcja obrotu Funkcja skali

14 Modyfikacja obiektu: Przykład float Alfa,X,Y,Z; glLoadIdentity();
glTranslatef( X, Y, Z ); glRotatef( Alfa, X, Y, Z ); glScalef( X, Y, Z ); glBegin(...); ... glEnd(); W przykładzie obiekt zdefiniowany w bloku glBegin/glEnd poddany jest najpierw skali o parametrach X, Y i Z, następnie obrócony o kąt Alfa wokół wektora [X, Y, Z] i w końcu przemieszczony o wektor [X,Y,Z].

15 3dMatchGL Dziękuję za uwagę


Pobierz ppt "3dMatchGL Wykorzystanie biblioteki graficznej OpenGL przy tworzeniu gry 3DMatchGL."

Podobne prezentacje


Reklamy Google