Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Alvaro Cuno
23/01/2010
OpenGL
Primitivas grficas vectoriales y matriciales (imgenes) Transformaciones e iluminacin Mapeamiento de texturas, etc.
OpenGL
Que no hace?
No hace administracin de ventanas No se preocupa con la interaccin con el usuario No se preocupa con archivos de entrada y salida Pero puede ser usada con varios lenguajes de programacin: C, C++, Python, Java, Fortran, etc.
No es un lenguaje de programacin
OpenGL
Disear primitivas geomtricas e imgenes Alterar variables de estado (ejemplo: color, material, pila de matrices, etc.) Consultar variables de estado Mecanismo estandarizado de extensiones Las nuevas versiones son establecidas por un comite (ARB) de usuarios y fabricantes
4
Funcionalidad grfica Funcionalidad extra Parte del estndar OpenGL Posee varias funciones para modelaje
Hello OpenGL
OpenGL: ejemplo 1
Renderizacin de un rectngulo
gluOrtho2D
(0,0)
x 1
gluOrtho2D
(0,0)
x 1
gluOrtho2D
(0,0)
x 1
10
gluOrtho2D
(0,0)
x 1
11
OpenGL: ejemplo 2
12
OpenGL: Texturas
13
OpenGL: Texturas
s 0 1
14
OpenGL: Texturas
s 0 1
15
OpenGL: Texturas
s 0 1
16
OpenGL: ejemplo 3
Host
Device
17
OpenGL: ejemplo 4
Image Texture
Host
Device
18
OpenGL: ejemplo 4
Image Texture
CUDA Kernel
Host
Device
19
OpenGL: ejemplo 5
0 1 0
1 1 1
0 1 0
20
OpenGL: ejemplo 5
0 1 0
1 1 1
0 1 0
Host
Device
21
OpenGL: Texturas
22
OpenGL: Imgenes
23
OpenGL: Imgenes
Sin compresin: son usados para reducir el espacio para almacenamiento y aumentar la velocidad de transmisin Compresin sin prdida: cada pxel original puede ser reproducido exactamente
Permite mejores tasa de compresin Ejemplo: formato JPEG (8/24 bits). No soporta transparencia
24
OpenGL: Imgenes
Sin compresin: son usados para reducir el espacio para almacenamiento y aumentar la velocidad de transmisin Compresin sin prdida: cada pxel original puede ser reproducido exactamente
Permite mejores tasa de compresin Ejemplo: formato JPEG (8/24 bits). No soporta transparencia
25
OpenGL: Imgenes
PPM (pixmap)
1 bit por pxel (P1/P4) 8 bits por pxeles (P2/P5) 24 bits por pxeles (P3/P6)
PGM (graymap)
PBM (bitmap)
26
OpenGL: Imgenes
PPM (pixmap)
27
OpenGL: Imgenes
PGM (graymap)
28
OpenGL: Imgenes
PBM (bitmap)
29
OpenGL: Imgenes
Ejercicio
Codifique una rutina para cargar una imagen de un archivo PPM Codifique filtros para procesamiento de imgenes
Blur
Edge detect
Sharpen
Edge enhance
Emboss
30
OpenGL: Imgenes
31
OpenGL 3D
32
OpenGL 3D
33
OpenGL 3D
34
OpenGL 3D
35
Modelos 3D
36
Modelos 3D
37
Modelos 3D
Modelos de superficie
Modelos volumtricos
38
Modelos 3D
Modelos de superficie
Modelos volumtricos
39
Modelos de superficies
40
Mallas
Ventajas
Desventajas
Exactitud arbitraria
Hardware especializado
41
Mallas
Aproximacin lineal por partes de superficies complejas Hoy en da las mallas de tringulos son altamente populares Buena alternativa para superficies spline tradicionales
Bastante usadas en CAD (computer-aided design) Juegos por computador y produccin de cine
42
Mallas
43
Mallas
Geomtrico
44
Mallas
Geomtrico
Topolgico
Mallas
Estructuras de datos
Punteros para lista de vrtices Punteros para lista de aristas Winged-Edge Half-Edge Face-Edge, Quad-Edge, Radial-Edge
46
Mallas
La descripcin de la ED halfedge es simple, sin embargo, su implementacin eficiente (tiempo/memoria), robusta y fcil de usar no lo es Se sugiere usar implementaciones opensource
Bibliotecas C++
47
Mallas
Formatos de archivos
PLY, STL, OFF, OBJ, 3DS, COLLADA, PTX, V3D, PTS, APTS, XYZ, GTS, TRI, ASC, X3D, X3DV, VRML, ALN
48
Mallas
Formato OFF
49
Identificador
Mallas
N. de vrtices
N. de polgonos
Formato OFF
Geometra
Topologa
50
Mallas
ED simple
v1
v2
f1
f2
v4
v3
51
Mallas
ED simple
v1
v2
f1
f2
v4
v3 V = {v1={x1,y1,z1}, v2={x2,y2,z2}, v3={x3,y3,z3}, v4={x4,y4,z4}} F = {idv1, idv2, idv3, idv1, idv3, idv4} FV = {idv1={f1,f2}, idv2={f1}, idv3={f2,f1}, idv4={f2}}
52
El futuro
53
El presente
54
Recursos
Libros online
GPU Gems: Programming Techniques, Tips, and Tricks for Real-Time Graphics
http://http.developer.nvidia.com/GPUGems/gpugems_part01.html
GPU Gems 2: Programming Techniques for HighPerformance Graphics and General-Purpose Computation
http://http.developer.nvidia.com/GPUGems2/gpugems2_part01.html http://http.developer.nvidia.com/CgTutorial/cg_tutorial_chapter01.ht ml
The Cg Tutorial
55
Recursos
Code
56