Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
Introducción a OpenGL                  Informática Gráfica¿Qué es OpenGL? Open Graphics Library Librería de funciones gráf...
¿Qué es OpenGL? Usos:  70% industria del videojuego  Reconstrucciones virtuales  Modelos arquitectónicos  … Implementacion...
¿Cómo funciona? Comportamiento similar a una máquina de estados   Un conjunto de variables representan el estado   actual ...
Sintáxis Conjunto de prefijos y sufijos   Los comandos utilizan el prefijo gl   Las constantes utilizan el prefijo GL_   L...
Estructura de un programaOpenGL Inicialización del sistema y de las ventanas Dibujo de la escena Bucle de gestión de event...
Crear una ventana  glutInitWindowPosition(int x, int y)    especifica la posición de la esquina superior izquierda    de l...
Inicializando la ventana Limpiar la ventana   glClearColor (r, g, b, a)     red, green, blue, canal alpha (0)     glClearC...
Área de dibujo Fijar un rectángulo de trabajo (view port) dentro del cual se representará la escena observada desde un pun...
Dibujar Dibujando un polígono   Indicar qué se va a dibujar     glBegin(GL_POLYGON);   Especificar los vértices     glVert...
Ejemplo#include <gl/glut.h>#include <gl/gl.h>void main (int argc, char** argv) {   abreVentana ();   glOrtho(-1.0, 1.0, -1...
Upcoming SlideShare
Loading in …5
×

Intro opengl

1,612 views

Published on

Intro opengl

Published in: Education
  • Be the first to comment

  • Be the first to like this

Intro opengl

  1. 1. Introducción a OpenGL Informática Gráfica¿Qué es OpenGL? Open Graphics Library Librería de funciones gráfica Gestión de gráficos en 3D Interfaz software para hardware gráfico Libre y multiplataforma Consta de unas 200 órdenes Especificación de objetos Generación de aplicaciones interactivas en 3D
  2. 2. ¿Qué es OpenGL? Usos: 70% industria del videojuego Reconstrucciones virtuales Modelos arquitectónicos … Implementaciones Mesa para Linux (freeware) Windows XX …¿Qué es OpenGL? Competidores Directx 3D (Microsoft): ni libre ni multiplataforma Xbox, Xbox360
  3. 3. ¿Cómo funciona? Comportamiento similar a una máquina de estados Un conjunto de variables representan el estado actual (color, punto de vista, propiedades material, …) El valor de las variables se cambia mediante instrucciones OpenGL Las variables tienen un valor por defecto¿Cómo funciona? Caraterísticas técnicas: Permite construir modelos geométricos (puntos, líneas y polígonos) a través de un conjunto de primitivas No tiene funciones relacionadas con el manejo de ventanas o entradas de usuario
  4. 4. Sintáxis Conjunto de prefijos y sufijos Los comandos utilizan el prefijo gl Las constantes utilizan el prefijo GL_ Las funciones poseen una sintaxis particular gl<orden>[234][sifd][v](args…) s- short, i- interger, f- float, d- double v- puntero a vector Ej. glVertex*()Librerías OpenGL Utility Library (GLU) Provee ciertas características de modelado Es una parte estándar para cualquier implementación de OpenGL OpenGL Utility Toolkit Library (GLUT) Kit de desarrollo independiente del sistema de ventanas Funciones: Manejo de ventanas Funciones de visualización Ejecución del programa Funciones de eventos Gestión de procesos en segundo plano Funciones de primitivas
  5. 5. Estructura de un programaOpenGL Inicialización del sistema y de las ventanas Dibujo de la escena Bucle de gestión de eventos Si cambia el dibujo, redibujarCrear una ventana Cinco instrucciones en el siguiente orden: glutInit(int *argc, char **argv) Inicializa la GLUT glutInitDisplayMode(unsigned int mode) especifica características de funcionamiento de la aplicación Modelo de color: se usará un modelo RGB (GLUT_RGB) o uno basado en índices si se trata de modelos de buffer sencillo o doble (GLUT_DOUBLE) Si se requiere algún otro buffer como son el stencil o la profundidad (GLUT_DEPTH)
  6. 6. Crear una ventana glutInitWindowPosition(int x, int y) especifica la posición de la esquina superior izquierda de la ventana en la pantalla glutInitWindowSize(int x, int y) especifica el tamaño de la ventana en pixels glutCreateWindow (char *nombre) crea la ventana y devuelve un identificador La ventana no será visible hasta después de llamar a la función glutMainLoop()Inicializando la ventana El sistema de coordenadas glOrtho (izquierda, derecha, abajo, arriba, cerca. lejos) Crea una matriz de proyección de coordenadas y la multiplica por la matriz de proyección actual Ejemplo: glOrtho(-1,1,-1,1,-1,1) Cerca y lejos será -1 y 1
  7. 7. Inicializando la ventana Limpiar la ventana glClearColor (r, g, b, a) red, green, blue, canal alpha (0) glClearColor(0.0f, 0.0f, 0.0f, 0.0f); glClear(GL_COLOR_BUFFER_BIT); Limpia el buffer de colorEspecificar el color glColor3f(r,g,b) Modelo RGB Valores entre 0 y 1 Ejemplo: GlColor3f(1.0,0.0,1.0); // Genera el Color Amarillo
  8. 8. Área de dibujo Fijar un rectángulo de trabajo (view port) dentro del cual se representará la escena observada desde un punto de vista determinado glViewport (x, y, ancho, alto) x, y determinan esquina inferior izquierda del área gráfica rectangular. Ancho, alto determinan la anchura y altura del rectángulo respectivamenteDibujar Puntos, líneas y polígonos se definen como construcciones sobre vértices Para especificar un vértice se utiliza el comando glVertex*() Para poder dibujar se necesita colocar cada vértice entre glBegin() y glEnd(). A glBegin() se le pasa un argumento que determina que tipo de primitiva va a dibujar con los vértices dados. GL_POINTS: dibuja puntos GL_LINES: dibuja líneas GL_POLYGON: dibuja polígonos … Entre glBegin() y glEnd() hay restricciones de que comandos openGL se pueden utilizar
  9. 9. Dibujar Dibujando un polígono Indicar qué se va a dibujar glBegin(GL_POLYGON); Especificar los vértices glVertex2f(x0,y0); glVertex2f(x1,y1); glVertex2f(x2,y2); .... Indicar que se ha terminado glEnd();Dibujar Completar el dibujo void glFlush(void); fuerza que los comandos previos de OpenGL empiecen a ejecutarse, sin garantizar que se completen en un tiempo finito. void glFinish(void); fuerza que TODOS los comandos previos de OpenGL se terminen de ejecutar. Este comando no retorna hasta que todos los efectos de los comandos previos son realizados completamente
  10. 10. Ejemplo#include <gl/glut.h>#include <gl/gl.h>void main (int argc, char** argv) { abreVentana (); glOrtho(-1.0, 1.0, -1.0, 1.0, -1.0, 1.0); glClearColor (0.0, 0.0, 0.0, 0.0); glClear (GL_COLOR_BUFFER_BIT); glColor3f (1.0, 1.0, 1.0); glBegin (GL_POLYGON); glVertex2f (-0.5, -0.5); glVertex2f (-0.5, 0.5); glVertex2f (0.5, 0.5); glVertex2f (0.5, -0.5); glEnd (); glFlush ();}Ejemplovoid abreVentana (int argc, char** argv) { glutInit(&argc, argv); glutInitDisplayMode(AUX_SINGLE | AUX_RGBA); glutInitWindowSize(ancho, alto); glutInitWindowPosition(x, y); glutCreateWindow("Primer programa"); glutDisplayFunc(void (*func)(void));}

×