OpenGL

Transkrypt

OpenGL
Grafika komputerowa
OpenGL
Szkielet programu
Biblioteka GLUT (1)
●
●
●
OpenGL jest uniwersalnym i przenośnym API
służącym do rysowania grafiki 2D i 3D.
W związku z tym w jej ramach nie umieszczono
procedur służących do interakcji z systemem
operacyjnym, w tym: otwierania okien, obsługi
klawiatury i myszy.
GLUT (OpenGL Utility Toolkit) jest API
zapewniającym interfejs do tworzenia prostych,
interaktywnych aplikacji 2D i 3D za pomocą
OpenGL.
Biblioteka GLUT (2)
●
●
●
Biblioteka GLUT zapewnia, między innymi,
możliwość tworzenia wielu okien, w których
można rysować za pomocą OpenGL, obsługę
urządzeń wejściowych, w tym klawiatury i myszy
za pomocą procedur callback.
Biblioteka GLUT nie jest oficjalną częścią
standardu OpenGL, ale została
zaimplementowana w wielu środowiskach.
Programy napisane za jej pomocą kompilują się
praktycznie wszędzie.
Szkielet programu (1)
●
●
●
Szkielet programu zostanie wykonany w Visual
Studio .NET 2003.
Do pracy wykorzystamy bibliotekę GLUT, którą
można sciągnąć korzystając z linka na mojej
stronie (plik glut-3.7.6-bin.zip).
Bibliotekę, tą można zainstalować w systemie
tak, aby była dostępna dla wszystkich projektów.
Sposób takiej instalacji został opisany w pliku
tekstowym załączonym do pliku glut-3.7.6bin.zip.
Szkielet programu (2)
●
●
●
Poniżej opisany zostanie sposób przygotowania
projektu w VS .NET, który nie wymaga
ingerencji w zainstalowane już oprogramowanie.
Pliki biblioteki będą zatem dostępne jedynie dla
tego projektu.
Gotowy projekt można ściągnąć z mojej strony
(plik szkielet.zip).
Szkielet programu (3)
●
●
●
●
Uruchom Visual Studio i z menu File wybierz
opcję New/Project.
W okienku dialogowym (lewa strona) wybierz
Visual C++ Projects, a po prawej stronie "Win32
Console Project".
Z dołu okienka dialogowego wybierz katalog
i nazwę projektu. Zatwierdź wybór przyciskiem
OK.
Wybierz opcję "Application Settings" i zaznacz
"Empty Project". Zatwierdź opcję przyciskiem
"Finish".
Szkielet programu (4)
●
●
●
●
W okienku "Solution explorer" naciśnij prawy
klawisz na "source files" i wybierz Add/Add new
item...
Wybierz "C++ file", wpisz nazwę pliku np.:
main_file. Zatwierdź za pomocą przycisku
"Open".
Z menu "Project" wybierz opcję "Properties".
Wybierz "linker/command line" i do okienka po
prawej stronie wpisz następujące biblioteki:
opengl32.lib glu32.lib glaux.lib glut32.lib
Szkielet programu (5)
●
Jako tresć pliku main_file.cpp wpisz następujący
kod:
#include
#include
#include
#include
#include
<windows.h> //Wymagane dla implementacji OpenGL w Visual Studio.
"gl\gl.h"
"gl\glu.h"
"gl\glaux.h"
"gl\glut.h"
void displayFrame(void) {
}
int main(int argc, char* argv[])
{
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB | GLUT_DEPTH);
glutInitWindowSize(450,450);
glutInitWindowPosition(0,0);
glutCreateWindow("Program OpenGL");
glutDisplayFunc(displayFrame);
//Tu
umieszczamy kod inicjujący pracę w OpenGL
glutMainLoop();
return 0;
}
Szkielet programu (6)
●
●
●
W katalogu z projektem utwórz podkatalog „gl”
i wgraj do niego plik "glut.h" z pliku glut-3.7.6bin.zip
Pozostałe pliki z archiwum wgraj do katalogu
z projektem.
Sprobuj skompilować i uruchomić projekt.
Powinieneś otrzymać dwa okna:
–
Okno z czarnym tłem – konsolę
–
Okno o nazwie "Program OpenGL", którego
zawartość nie jest rysowana.
Szkielet programu (7)
●
●
Gotowy szkielet programu można również
ściągnąć z mojej strony (plik szkielet.zip).
Kolejne slajdy objaśniają działanie
poszczególnych procedur biblioteki GLUT, które
zostały wykorzystane w szkielecie programu.
Procedura glutInit
●
Inicjuje do pracy bibliotekę GLUT.
●
Składnia: void glutInit(int *argcp, char **argv);
●
●
●
Jako parametry powinno się przekazywać argc
i argv z procedury main.
Parametry te są modyfikowane poprzez usunięcie
wszystkich opcji rozumianych przez bibliotekę
GLUT.
Opcje te są wykorzystywane do parametryzacji
pracy biblioteki.
Procedura glutInitDisplayMode
●
●
●
Ustawia początkowy tryb wyświetlania
Składnia:
void glutInitDisplayMode(unsigned int mode);
Parametr mode jest mapą bitową w której opcje
ustawia się jako superpozycję (sumę bitową)
pewnych stałych, np:
–
GLUT_DOUBLE – podwójne buforowanie
–
GLUT_RGB – wyświetlanie kolorów bez palety
–
GLUT_DEPTH – ukrywanie niewidocznych powierzchni
za pomocą Z-Bufora
Procedura glutInitWindowSize
●
●
Ustala wymiary okna w pikselach, które powinno
zostać utworzone za pomocą glutCreateWindow
(patrz dalej).
Składnia:
void glutInitWindowSize(int width, int height);
Procedura glutInitWindowPosition
●
●
Ustala położenie okna (w pikselach), które
zostanie utworzone za pomocą
glutCreateWindow (patrz dalej).
Składnia
void glutInitWindowPosition(int x, int y);
Procedura glutCreateWindow
●
●
●
Tworzy okno o zadanym tytule oraz położeniu
i wymiarach zadanych za pomocą procedur
glutInitWindowSize i glutInitWindowPosition.
Składnia: int glutCreateWindow(char *name);
Okno jest faktycznie pokazywane dopiero w
momencie wykonania glutMainLoop (patrz
dalej).
Procedura glutDisplayFunc
●
●
●
Ustala adres procedury callback wywoływanej w
sytuacji, gdy konieczne jest odświeżenie
zawartości okna.
Składnia:
void glutDisplayFunc(void (*func)(void));
Procedura callback może mieć dowolną nazwę,
ale nie może przyjmować żadnych parametrów,
ani zwracać żadnych wartości (w końcu to
procedura ;))
Procedura glutMainLoop
●
●
●
●
Reprezentuje główną pętlę programu.
W momencie zajścia różnych zdarzeń wywołuje
odpowiednie procedury callback.
Zakończenie tej procedury powinno kończyć
program.
Procedura zostanie zakończona jedynie w
odpowiedzi na odpowiednie zdarzenie.