Gráficas Computacionales OpenGL ITESM-CEM Departamento de Ciencias Computacion ales Contenido Historia Metas de Diseño de OpenGL Estructura de un Programa Primitivas de Dibujo y Polígonos Interpolación Lineal de ColorPropiedades de Puntos, Líneas, etc.
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
5/12/2018 1.2a OpenGL - slidepdf.com
http://slidepdf.com/reader/full/12a-opengl 1/34
Gráficas Computacionales
OpenGL
ITESM-CEM Departamento de Ciencias Computacionales
Contenido
Historia
Metas de Diseño de OpenGL
Estructura de un Programa
Primitivas de Dibujo y Polígonos Interpolación Lineal de Color
Propiedades de Puntos, Líneas, etc.
5/12/2018 1.2a OpenGL - slidepdf.com
http://slidepdf.com/reader/full/12a-opengl 2/34
Historia
Recuerda el proceso de síntesis: Transforma geometría (objeto ->mundo,
mundo ->ojo)
Aplica proyección de perspectiva (ojo ->pantalla)
Recorta al fustrum de vista
Procesa superficies visibles (Z-buffer)
Calcula iluminación de superficie
Implementar todo este proceso esmucho trabajo
Historia
En 1982 Silicon Grahics (SGI) revolucionalas estaciones de trabajo gráficasimplementando el proceso de síntesis en“hardware”.
Los programadores de aplicacionesusaban una librería llamada GL parautilizar el sistema.
5/12/2018 1.2a OpenGL - slidepdf.com
http://slidepdf.com/reader/full/12a-opengl 3/34
Historia
Con GL era relativamente simpleprogramar aplicaciones 3-D interactivas,así que su éxito lleva a la creación deOpenGL en 1992.
Metas de Diseño de OpenGL
SGI diseñó OpenGL para lograr un APIgráfico: Con cierta independencia del “hardware”
Natural y compacto
Fácil de usar Suficientemente cercano al “hardware”, para tener
un excelente desempeño (usando aceleración por“hardware”)
Enfocado en el dibujo (“render”)
Independiente de cualquier sistemas de ventanas
5/12/2018 1.2a OpenGL - slidepdf.com
http://slidepdf.com/reader/full/12a-opengl 4/34
Metas de Diseño de OpenGL
Para usarse con C y C++ (pero que también puedeusarse con Java, Visual Basic, etc.)
Estándar gratuito y con código abierto
Controlado y revisado por un consejo que incluye aSGI, Microsoft, Nvidia, HP, 3DLabs, IBM, etc.
Muy estable
Extensible (su evolución refleja las nuevascapacidades del “hardware”)
Lo que OpenGL hace
OpenGL se ha vuelto un estándar pues:No trata de hacer demasiadas cosas
Sólo dibuja la imagen, no maneja ventanas, modelado,sonido o animación de alto nivel
Hace lo suficiente
Efectos útiles de síntesis con alto rendimientoDibuja ObjetosVe ObjetosEspecifica modelos de colorAplica IluminaciónMejora ImágenesManipula Bitmaps e ImágenesMapea Texturas
5/12/2018 1.2a OpenGL - slidepdf.com
http://slidepdf.com/reader/full/12a-opengl 5/34
OpenGL para el Programador
Aplicación
Paquete de GráficasAplicación
API de OpenGL
Hardware y Software
Dispositivos de Entrada Dispositivos de Salida
OpenGL Rendering Pipeline
La mayor parte de las implementaciones de OpenGLsiguen un mismo orden en sus operaciones, lo que seconoce como “rendering pipeline” de OpenGL
Geometry
PrimitiveOperations
Pixel
Operations
Scan
Conversion
Texture
Memory
Fragment
Operations
F r a m e b uf f e r
Vertex
Images
5/12/2018 1.2a OpenGL - slidepdf.com
http://slidepdf.com/reader/full/12a-opengl 6/34
Librerías de OpenGL
OpenGL Core Library OpenGL32 en Windows
Provee principalmente funcionalidad pararealizar el “rendering”
OpenGL Utility Library (GLU) Provee funcionalidad de una nivel más alto
que utiliza los comandos de bajo nivel de
OpenGL Proyecciones, superficies, etc.
Librerías de OpenGL
OpenGL Utility Toolkit (GLUT)
Provee capacidades básicas de ventanas
Utilizado para el manejo de eventos de entrada:
Mouse, teclado, meús
Rutinas “callback”
Interface común para múltiples plataformas (puedenportarse entre X Windows y MS Windows e inclusiveMac)
GLUT no tiene todo (no hay deslizadores (sliders), cajasde diálogo, barras de menu (menu bar) bar, etc.)
5/12/2018 1.2a OpenGL - slidepdf.com
http://slidepdf.com/reader/full/12a-opengl 7/34
Librerías de OpenGL
Estructura de un Programa
1. Configura y abre ventana (GLUT)2. Registra funciones de captura de eventos
(callback GLUT) Dibuja (render)
Cambia de tamaño (Resize) Entrada: teclado, ratón, etc.
3. Entra en el ciclo de procesamiento deeventos (GLUT)
5/12/2018 1.2a OpenGL - slidepdf.com
http://slidepdf.com/reader/full/12a-opengl 8/34
Programa Sencillo
Dibujar un cuadro blanco en una ventanade fondo negro
La mayoría de los elementos (funciones,constantes, tipos de datos) están definidasen los archivos:
gl.h, glu.h y glut.h
Nota: glut.h incluye automáticamente a las otras
Ejemplos de elementos definidos:
Funciones: glBegin, glClear, …
Constantes: GL_POLYGON, …
Tipos de datos: Glfloat, Gldouble, …
Ciclo de Eventos
La función principal (main) siempre termina conel programa introduciéndose en un ciclo infinitode eventos: glutMainLoop()
Casi todos los programas de ventanas estánbasados en eventos. Así, no se realiza ningunaacción hasta que sucede un evento quedesencadena una acción (“callback”).
5/12/2018 1.2a OpenGL - slidepdf.com
http://slidepdf.com/reader/full/12a-opengl 10/34
Funciones de Callback
En el ejemplo se registra una función“callback” de desplegado: myDisplay()
Esta función “callback” será llamada cadavez que sea necesario refrescar lospixeles de la ventana
La función “callback” termina con un
glFlush() (que obliga a ejecutar cualquierinstrucción que haya quedado pendiente)