Racunarska grafika - Biblioteka OpenGLpoincare.matf.bg.ac.rs/~ivan/files/rg/folije-ivan.pdf ·...
Transcript of Racunarska grafika - Biblioteka OpenGLpoincare.matf.bg.ac.rs/~ivan/files/rg/folije-ivan.pdf ·...
Računarska grafikaBiblioteka OpenGL
Godina 2017/2018.
Ivan Čukić
[email protected]/~ivanMatematički fakultet, Univerzitet u Beogradu
Uz veliku zahvalnostAleksandru B. Samardžiću
Legenda
OpenGLOpenGL Core ProfileOpenGL Compatibility Profile
OpenGL Utility LibraryOpenGL Utility ToolkitOpenGL Extension Wrangler
Sekcija u beleškama za predavanja, Predrag Janičić
OpenGL Programming Guide (Red Book), 7th editionLink ka objašnjenju pojma na Wikipedia.orgLink ka arhivi sa izvornim kôdom
3
UVOD
OpenGL
GLUT
Osnove iscrtavanja
Mogućnosti
Definisanje tačaka, linija, poligona u prostoru
Postavljanje osvetljenja
Postavljanje pozicije posmatrača i osobina pogleda
5
Sintaksa
Komande imaju prefix g lg l B e g i n , g l V e r t e x
Konstante imaju prefix G L _G L _ M U L T I S A M P L E , G L _ P O L Y G O N
Tipovi podataka imaju prefix G LG L b y t e , G L d o u b l e
Red Book: 1.2
6
Osobine
Minimalan API
Ne zavisi od platforme
Ne zavisi od UI biblioteke
Mašina stanjaState machine
7
Overloading
g l C o m m a n d nt[v]
n - koliko funkcija prima argumenata
t - oznaka tipa argumenta
v - ako se argumenti prosleđuju kao vektor, odnosnopokazivač na nulti element
Primeri:
g l V e r t e x 3 f ( x , y , z )
g l V e r t e x 2 i v ( n i z )
8
Tipovi
sufiks tip podataka OpenGL tip
b 8-bit integer GLbytes 16-bit integer GLshorti 32-bit integer GLint
f 32-bit real GLfloatd 64-bit real GLdouble
ub 8-bit unsigned integer GLubyte, GLbooleanus 16-bit unsigned integer GLushortui 32-bit unsigned integer GLuint, GLenum, GLbitfield
9
Pipeline
OpenGL 1.xFixed pipeline
transformacija temena8
odsecanje (clipping) 5.2
rasterizacija
osvetljavanje
operacije nad pikselima
Compatibility profile in 3.2g l B e g i n
OpenGL 2.x, 3.xProgrammable pipeline
Svaki korak je mogućeprogramirati Shader
Vertex shader
Geometry shader
Fragment (pixel) shader
Core profile in 3.2g l E n a b l e
Red Book: 1.5
10
Pomoćne biblioteke
GLU - OpenGL Utility Libraryg l u O r t h o 2 D
GLUT - OpenGL Utility Toolkitg l u t M a i n L o o p
GLEW - OpenGL Extension Wrangler Libraryg l e w G e t C o n t e x t
11
GLUT biblioteka
Mogućnosti:
Korisničko okruženje 2.3 3.1
Obrada događaja
Pomoć pri iscrtavanju
Alternative: Qt, GTK+, Swing, ...
Program: 01-quad
12
GLUT biblioteka
Inicijalizacija biblioteke:
g l u t I n i t
g l u t I n i t D i s p l a y M o d e
Kreiranje prozora:
g l u t I n i t W i n d o w S i z e
g l u t I n i t W i n d o w P o s i t i o n
g l u t C r e a t e W i n d o w
Program: 01-quad
13
GLUT biblioteka
Callback funkcije:
g l u t D i s p l a y F u n c
g l u t K e y b o a r d F u n c
g l u t M o u s e F u n c
UI petlja i iscrtavanje:
g l u t M a i n L o o p
g l u t S w a p B u f f e r s
Program: 01-quad
14
Osnovne komande
Inicijalizacija OpenGL-a:
g l C l e a r C o l o r , g l C l e a r
g l E n a b l e , g l D i s a b l e
Osnove iscrtavanja:
g l B e g i n , g l E n d
g l C o l o r
g l V e r t e x
Program: 01-quad Red Book: 2.1
15
Parametri iscrtavanja
Model boja: RGB, RGBA 12.4.3
Double-buffering 3.3.4
Z-buffer 11.4
16
Double-buffering
Ekran
Prikazani bafer Bafer po kome crtamo
17
Z-buffer
Iscrtana slika Z-buffer
Program: 02-quad-test-depth
18
Podrazumevani pogled
Vidljivi prostor [−1, 1]3 ⊂ R3
Ortogonalna projekcija na xy ravan (front-elevation)8.3
19
DODATAK
Editori
Kompajler
make
Editor
Emacs
Vim
Kate, KWrite, etc.
21
Kompajler
Kompilacija:
gcc i z v o r n i _ f a j l . c −o i z v r s n i _ f a j l
Pokretanje
. / i z v r s n i _ f a j l
22
Linkovanje dodatnih biblioteka
- l – library
gcc . . . −l b ib l io teka1 −l b ib l io teka2 . . .gcc . . . −lm −lGL −lGLU − l g l u t . . .
- L – library-path
gcc . . . −L / usr /X11R6/ l i b −L / usr /pkg/ l i b . . .
23
Include putanje
- I – include-path
gcc . . . −I / usr /X11R6/ include −I / usr /pkg/ include . . .
24
Drugi korisni argumenti
- W a l l – prijavljuje sva upozorenja- a n s i – prati ANSI C standard- g – uključuje debug simbole u izvršni fajl
25
Makefile, GNU make
Makefile pravilo:
c i l j : zav i snost i−> komande za prav l jen je c i l j a
Primer 1. Kompilacija programa
program : main . c−> gcc −o program −lm −ansi −g −Wall main . c
Primer 2. Brisanje binarnih fajlovaclean :−> −rm −f program−> −rm −f * .o
- > je tabulator. Ako se zameni razmacima, komanda m a k e neće raditi26