Laboratorium grafika3D 1


Laboratorium nr 1 1/4
Grafika Komputerowa 3D
Instrukcja
laboratoryjna Temat: Wprowadzenie do OpenGL + GLUT
Przygotował: mgr inż. Maciej Lasota
1
1) OpenGL
OpenGL (ang. Open Graphics Library, www.opengl.org) jest otwartą i w pełni
przenośną biblioteką graficzną przeznaczoną do tworzenia trójwymiarowej grafiki. Używana
jest obecnie do różnych celów od programów typu CAD, przez aplikacje architektoniczne aż
do generowania efektów specjalnych w filmach i grach komputerowych. Przodkiem biblioteki
OpenGL była biblioteka IRIS GL firmy Silicon Graphics. IRIS GL była biblioteką dla stacji
roboczych IRIS.
OpenGL jest rezultatem prac firmy Silicon Graphics nad poprawą przenaszalności
biblioteki IRIS GL. W lipcu 1992 powstał pierwsza wersja OpenGL 1.0. Obecnie biblioteka ta
jest w pełni otwarta i dostępna dla wielu platform systemowych. Umożliwia ona rysowanie
punktów, odcinków i wielokątów w trzech wymiarach. Ponadto obsługuje oświetlenie,
cieniowanie, mapowanie tekstur, animacje oraz dodatkowe efekty specjalne. OpenGL nie
zawiera żadnych funkcji przeznaczonych do zarządzania oknami, interakcją z użytkownikiem
czy operacji wejścia/wyjścia.
2) GLUT
GLUT (ang. OpenGL Utility Toolkit) jest biblioteką użytkową, której głównym
zadaniem jest zarządzanie systemem wejścia/wyjścia oraz generowanie i zarządzanie
oknami. Biblioteka GLUT rozszerza możliwości standardowej biblioteki OpenGL, w
znacznym stopniu usprawnia przenoszenie kodu na różne platformy systemowe oraz ułatwia
proces uczenia się OpenGL a.
3) Instalacja OpenGL + GLUT
W celu zainstalowanie bibliotek OpenGL oraz GLUT w systemie operacyjnym
Windows, należy skopiować odpowiednie pliki nagłówkowe oraz pliki bibliotek (*.lib,*.a,*.dll)
do odpowiednich katalogów. Poniżej została przedstawiona tabelka prezentująca nazwy
plików, które należy skopiować oraz ich docelowe lokalizacje.
Laboratorium nr 1 2/4
Pliki Lokalizacja
gl.h
glu.h \katalog kompilatora\include\GL
glut.h
opengl32.lib (*.a)
glu32.lib (*.a) \katalog kompilatora\lib
glut32.lib (*.a)
opengl32.dll
glu32.dll \katalog systemowy\system32\
glut32.dll
UWAGA!!! W celu kompilacji kodu zródłowego należy dodać następujące
parametry  lopengl32  lglu32  glut32
4) Konwencja nazw funkcji i typy danych
Wszystkie funkcje biblioteki OpenGL (oraz bibliotek pomocniczych) zostały nazwane
zgodnie z określoną konwencją, informującą o danej bibliotece, z której pochodzi dana
funkcja oraz o rodzaju i typie przyjmowanych argumentów. Nazwy wszystkich funkcji
posiadają rdzeń określający odpowiadające funkcji polecenie.
Przykład:
Biblioteka Typ
Rdzeń
argumentów
Liczba
argumentów
Biblioteka OpenGL, w celu pełnej przenośności kodu między różnymi platformami
wprowadza swoje własne typy danych:
Przykład:
GLint, GLfloat, GLdouble, GLsize, GLshort, GLbyte, GLboolean
Laboratorium nr 1 3/4
5) Szkielet programu
#include
#include
void wyswietlaj()
{
// Tu umieszczamy kod, który zostanie
// narysowany w obszarze widzenia
}
void rozmiar(int w, int h)
{
// Tu umieszczamy kod odpowiedzialny
// za ustawienie rzutowania oraz okna widoku
}
int main(int argc,char *argv[])
{
// Tu umieszczamy kod odpowiedzialny zainicjowanie
// biblioteki GLUT oraz przygotowanie okna do rysowania
}
6) Najważniejsze funkcje bibliotek GLUT
Nazwa funkcji Opis
glutInit
Funkcja inicjuje bibliotekę GLUT
Funkcja inicjuje tryb wyświetlania zazwyczaj
glutInitDisplayMode
przyjmuje dwa parametry GLUT_DOUBLE oraz GLUT_RGB
glutInitWindowSize
Funkcja inicjuje rozmiar nowo tworzonego okna
glutPositionWindow
Funkcja określa położenia okna na ekranie monitora
Funkcja tworzy nowe okno,
glutCreateWindow
jako parametr przyjmuje nazwę dla okna
Funkcja służy do podpięcia (rejestracji) funkcji rysujące, funkcja rysująca
glutDisplayFunc
wywoływania jest za pomocą
wywołania zwrotnego (ang. callback) z okna głównego
Funkcja służy do podpięcia (rejestracji) funkcji odpowiedzialnej za zmianę obszaru
glutReshapeFunc
rysowani oraz rzutowania. Podpięta funkcja wywoływania jest za pomocą
wywołania zwrotnego (ang. callback) przy zmianie rozmiarów okna
Funkcja służy do podpięcia (rejestracji) funkcji
glutKeyboardFunc
odpowiedzialnej za obsługę klawiatury.
Funkcja uruchamia pętle główną biblioteki GLUT, pelta ta czeka na wystąpienie
glutMainLoop
odpowiedniego wyjątku.
Funkcja wykorzystywana w przypadku ustawienia podwójnego bufora
glutSwapBuffers
GLUT_DOUBLE, służy do przełączania bufora
glutFullScreen
Funkcja ustawia tryb pełnoekranowy dla okna
Laboratorium nr 1 4/4
7) Przykładowy program
Przykładowy kod zródłowy napisany z wykorzystanie biblioteki OpenGL oraz GLUT,
program rysuje na środku obszaru widzenia czerwony kwadrat.
#include
#include
void display()
{
glClear(GL_COLOR_BUFFER_BIT);
glColor3f(1.0, 0.0, 0.0);
glBegin(GL_QUADS);
glVertex2f(270, 190);
glVertex2f(370, 190);
glVertex2f(370, 290);
glVertex2f(270, 290);
glEnd();
glutSwapBuffers();
}
void reshape(int w, int h)
{
glViewport(0, 0, (GLsizei) w, (GLsizei) h);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
gluOrtho2D(0.0, (GLdouble) w, 0.0, (GLdouble) h);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
}
int main(int argc,char *argv[])
{
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB);
glutInitWindowSize(640, 480);
glutCreateWindow(argv[0]);
glutDisplayFunc(display);
glutReshapeFunc(reshape);
glutMainLoop();
return 0;
}


Wyszukiwarka

Podobne podstrony:
Laboratorium grafika2D 4
Laboratorium grafika3D 4
Laboratorium grafika2D 7
Laboratorium grafika3D 7
Laboratorium grafika2D 3
Laboratorium grafika2D 1
Laboratorium grafika3D 3
Laboratorium grafika3D 5
Laboratorium grafika3D 6
Laboratorium grafika3D 2
Laboratorium grafika2D 2
Laboratorium grafika2D 6
Rola laboratoriów w świetle wymagań systemów zarządzania jakoscią
Laboratorium 3
Arch grafika osnovi kompozicii grigoryan

więcej podobnych podstron