OpenGL - wprowadzenie

Transkrypt

OpenGL - wprowadzenie
OpenGL - wprowadzenie
14 kwietnia 2008
Skladnia
Wszyskie nazwy funkcji podstawowej biblioteki OpenGL zaczynaja֒ sie֒ od liter gl :
glBegin,
glClear,
glPolygonMode.
Stale symboliczne rozpoczynaja֒ sie֒ od GL i posane sa֒ zawsze dużymi literami:
GL_RGB,
GL_POLYGON, GL_AMBIENT_AND_DIFFUSE.
OpenGL operuje na nastepuj
acych
typach danych:
֒
֒
GLbyte,
GLshort,
GLint,
GLfloat.
Wraz z podstawowa֒ biblioteka֒ OpenGL używane sa֒ również biblioteki OpenGL Utility
(GLU) oraz OpenGL Utility Toolkit (GLUT).
Obsluga okienka przy użyciu biblioteki GLUT
•
glutInit(&argc, argv)
- inicjalizuje biblioteke֒ GLUT.
•
glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB)
- ustawia jeden bufor odświeżania i model kolorów.
•
glutInitWindowPosition(x,y)
- określa polożenie okienka na ekranie liczac
֒ od lewego górnego rogu w pikselach.
•
glutInitWindowSize(x,y)
- określa rozmiary poczatkowe
okienka w pikselach.
֒
•
glutCreateWindow("Window title")
- tworzy na ekranie okienko w którym bed
֒ a֒ wyświeltane obrazy.
•
glutDisplayFunc(some_function)
- przetwarza opis obrazu wygenerowany przez podana֒ funkcje.
֒
•
glutMainLoop()
- wyświetla obraz w okienku i przechodzi w stan oczekiwania na zdarzenia.
•
glClearColor(r,g,b,alpha)
- ustawia kolor tla w buforze.
1
•
glClear(GL_COLOR_BUFFER_BIT)
- zmienia kolor tla w wyświetlanym okienku na kolor ustawiony przez funkcje֒
glClearColor.
•
glMatrixMode(GL_PROJECTION)
- ustala sposób przetworzenia obrazu do wyświetlenia
•
gluOrtho2D(xmin, xmax, ymin, ymax)
- określa zasieg
w wyświetlanym okienku.
֒ wspólrzednych
֒
•
glFlush()
- opróżnia bufory
Opis obrazu
•
glColor3f(r,g,b)
- ustawia aktualny kolor.
•
glBegin(GL_LINES)
- rozpoczyna sekwencje֒ wierzcholków. Możliwe figury:
– GL POINTS - punkty
– GL LINES - odcinki
– GL LINE STRIP - ciag
֒ odcinków
ostatni wierz– GL LINE LOOP - ciag
֒ odcinków wraz z odcinkiem lacz
֒ acym
֒
cholek z pierwszym.
– GL POLYGON - rysuje wielokat
֒ o zadanych wierzcholkach
– GL TRIANGLES - rysuje trójkaty
֒
– GL TRIANGLE STRIP - ciag
֒ trójkatów
֒
– GL TRAINGLE FAN - wachlarz trójkatów
֒
– GL QUADS - czworoboki
– GL QUAD STRIP - ciag
֒ czworoboków
•
glEnd()
- kończy sekwencje֒ wierzcholków
•
glVertex*()
- dodaje wierzcholek
•
glRasterPosition*
- ustawia kursor w wybrane miejsce
•
glutBitmapCharacter(czcionka, znak)
- wypisuje wybrany znak. Przykladowe czcionki: GLUT BITMAP TIMES ROMAN 10
lub, GLUT BITMAP HELVETICA 12.
2
Wlaściwości obrazu
•
glLineWidth(width)
- ustawia grubość linii
•
glLineStipple(repeatFactor, pattern)
- ustala typ linii: pattern jest bitowym wzorem a repeatFactor określa powtarzalność pikseli.
•
glEnable(GL_LINE_STIPPLE)
- zezwala na zmiane֒ typu linii
•
glDisable(GL_LINE_STIPPLE)
- powraca do cigag
֒ lej linii
•
glPolygonMode(face, displayMode)
- ustala sposób wyświetlania wielościanu na displayMode: face przyjmuje wartości
GL FRONT, GL BACK lub GL FRONT AND BACK, natomiast displayMode
wartości GL POINT, GL LINE, GL FILL.
Transformacje obrazu
•
glLoadIdentity()
- przypisuje macierzy transformacji macierz jednostkowa.
֒
•
glMatrixMode(GL_MODELVIEW)
- stosuje nastepne
operacje do macierzy transformacji geometrycznych
֒
•
glTranslatef(tx, ty, tz)
- tworzy macierz opisujac
֒ a֒ translacje.
•
glRotatef(theta, vx, vy, vz)
- tworzy macierz opisujac
֒ a֒ obrót o kat
֒ theta wokól osi wskazanej przez wektor
(vx,vy,vz).
•
glScalef(tx, ty, tz)
- tworzy macierz opisujac
osi x, ty
֒ a֒ przeskalowanie o czynnik tx wzgledem
֒
wzgledem
osi
y
i
tz
wzgl
edem
osi
z.
֒
֒
Funkcje interaktywne
•
glutMouseFunc(mouseFunc)
- obsluga myszy poprzez funkcje void mouseFcn( GLint button, GLint action,
GLint xMouse, GLint yMouse), gdzie button: GLUT LEFT BUTTON, GLUT MIDDLE BUTTON,
GLUT RIGHT BUTTON, natomiast action: GLUT DOWN, GLUT UP. Wywolywana
gdy dany klawisz zostanie naciśniety
lub zwolniony. Wspólrzedne
punkty sa֒ prze֒
֒
kazywane przez zmienne xMouse i yMouse.
3
•
glutMotionFunc(mouseFunc)
- wywolywana gdy kursor zostanie przeciagni
ety
nad okienkiem z naciśnietym
֒
֒
֒
klawiszem. Tym razem zostaje wywolana funkcja void mouseFcn( GLint xMouse, GLint yMouse) actualnego polożenia myszy wzgledem
lewego, górnego rogu.
֒
•
glutPassiveMotionFunc(mouseFcn)
- wywolywana gdy kursor zostanie przeciagni
ety
nad okienkiem bez naciśnietego
֒
֒
֒
klawisza.
•
glutKeyboardFunc(keyFunc)
- wywolywana gdy naciśniety
jest klawisz. Odpowiada funkcja void keyFcn(
֒
GLubyte key, GLint xMouse, GLint yMouse), przy czym xMouse i yMouse zawieraja֒ aktualna֒ pozycje֒ kursora myszy.
•
glutSpecialFunc(specialKeyFcn)
- obsluguje klawisze specjalne. Wywolywana jest funkcja void specialKeyFcn(
GLint specialKey, GLint xMouse, GLint yMouse), gdzie specialKey przyjmuje
wartości: GLUT KEY F1, ..., GLUT KEY F12, GLUT KEY UP, GLUT KEY DOWN,
GLUT KEY PAGE DOWN, GLUT KEY HOME, ...
4

Podobne dokumenty