Documente Academic
Documente Profesional
Documente Cultură
Introducere
Ce este CG?
Mijloc de creare, stocare i manipulare a modelelor i imaginilor cu ajutorul sistemelor grafice
Modelele provin din diverse domenii de aplicaie, precum fizic, matematic, art, biologie etc.
Bazat pe geometria obiectelor i atributele acestora
Ex: Animatie
Ex: Arta
Ce se nvata?
nelegerea principiilor de baz ale tehnologiilor grafice hardware i software, algoritmi i terminologie
Utilizarea interfeei de programare a aplicaiilor OpenGL pentru a scrie programe grafice 2D/3D Nu se nva pachete de programe !
Hardware-ul grafic
Hardware-ul grafic
Hardware dedicat operaiilor de prelucrare i afiare a informaiilor grafice Hardware:
BIOS memorie PROM care conine o secven de program necesar interfarii hardware-ului video cu sistemul de calcul
VRAM (Video RAM) memorie volatil dedicat, de mare vitez, interfaat cu procesorul grafic
RAMDAC (Random Access Memory DigitalAnalog Converter) convertete informaia digital n semnale analogice necesare monitorului
GPU (Graphic Processing Unit) procesor destinat efecturii operaiilor grafice, n arhitectur paralel dedicat
Interfete hardware
Interfete hardware
Interfete hardware
Pipeline-ul grafic
Pipeline flux de procesare hardware = ordinea n care sunt efectuate operaiile de generare a unei imagini pornind de la modelul 3D
(poligoane) pornind de la pixelii generai anterior de ctre vertex shader i le adaug informaia de culoare
GeForce 6 Series
GeForce 8 Series
RAM Sistem
RAM Sistem
CPU
Hardware grafic
Utilizarea a dou plci video conectate n mod master/slave (nVidia = SLI sau ATI = CrossFire)
Hardware grafic
Utilizarea a dou procesoare grafice, unul integrat onboard iar cellalt dedicat (nVidia = Hybrid SLI)
CUDA
Unificarea arhitecturii (CPU+GPU) pentru mrirea puterii de calcul GPU efectueaz att calcule grafice, ct i calcule de fizica obiectelor (fluide, foc, fum etc.)
GPGPU
Utilizarea puterii de calcul al GPU pentru rezolvarea unor sarcini non-grafice primite de la sistemul PC (General-Purpose computing on Graphics Processing Units) Aplicaii:
Prelucrare de semnal audio Calcule financiare Reele neurale Transformate Fourier Fizic molecular Prelucrarea bazelor de date Criptografie
Tehnologii
API-uri de programare
API = Application Programming Interface, reprezint interfaarea dintre aplicaia software i hardware
Programarea aplicaiilor
Ghiduri de programare
Grafica 2D
Generarea n OpenGL a unei ferestre grafice (utiliznd GLUT)
Grafica 3D
Generarea primitivelor grafice 3D Poziionarea obiectelor n spaiu Utilizarea transformatelor de coordonate
Randarea scenelor
Randare Procesul de calculare a unei imagini pornind de la datele de intrare
Date de intrare
Tehnici de randare
Terminologie
Randare conversia scenei 3D n imagine 2D Scen modelarea mediului 3D cu ajutorul primitivelor grafice
suportate de ctre sistem
Modelele sunt create de mn sau automat Imaginea este afiat pe un monitor, listat la imprimant sau
stocat n fiiere
4. Rularea aplicatiei
Compilare
Build
Execuie
4. Rularea aplicatiei
Comenzile OpenGL
Instruciunile au prefixul gl iar sufixele specific numrul argumentelor i tipul de date utilizate ca argument n interiorul instruciunii
glClearColor();
glVertex2i(1,3);
Comenzile OpenGL
Variantele de sufix pentru definirea tipului de date
Comenzile OpenGL
Constantele sunt definite sub forma unor stringuri majuscule care conin prefixul GL iar restul cuvintelor sunt separate cu ajutorul simbolului underscore
GL_COLOR_BUFFER_BIT
Bibliotecile grafice specifice conin prefix propriu. De exemplu, instruciunile rezervate ale bibliotecii GLUT (OpenGL pentru Windows) au prefixul glut glutInitWindow(GLUT_SINGLE|GLUT_RGB);
tergerea ferestrei grafice cu o anumit culoare Alegerea unei culori pentru desenarea unui obiect grafic Desenarea unui obiect grafic Controlul modului de desenare al obiectului grafic Forarea execuiei instruciunilor grafice
2)
3)
4)
5)
glBegin(tip_obiect); ...
enumerare vertexuri
... glEnd();
GL_POINTS GL_LINES GL_POLYGON GL_TRIANGLES GL_QUADS GL_LINE_STRIP GL_LINE_LOOP GL_TRIANGLE_STRIP GL_TRIANGLE_FAN GL_QUAD_STRIP
glFlush();
glutSwapBuffers();