Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Contenido
1 Introducción
2 Conceptos
3 Cámara Sintética
4 Arquitectura
5 Funciones y Primitivas
6 Visualización
1 / 70
Introducción Conceptos Cámara Sintética Arquitectura Funciones y Primitivas Visualización
Contenido
1 Introducción
2 Conceptos
3 Cámara Sintética
4 Arquitectura
5 Funciones y Primitivas
6 Visualización
2 / 70
Introducción Conceptos Cámara Sintética Arquitectura Funciones y Primitivas Visualización
Objetivo
Obtendremos así una comprensión no sólo de las funciones de la API, sino de los
conceptos subyacentes a las grácas por computadora.
3 / 70
Introducción Conceptos Cámara Sintética Arquitectura Funciones y Primitivas Visualización
OpenGL
parte 1
OpenGL es un estándar creado por Silicon Graphics en el año 1992 para el diseño
de una librería 2D/3D portable.
4 / 70
Introducción Conceptos Cámara Sintética Arquitectura Funciones y Primitivas Visualización
Librería GLUT
5 / 70
Introducción Conceptos Cámara Sintética Arquitectura Funciones y Primitivas Visualización
OpenGL
parte 2
6 / 70
Introducción Conceptos Cámara Sintética Arquitectura Funciones y Primitivas Visualización
Contenido
1 Introducción
2 Conceptos
3 Cámara Sintética
4 Arquitectura
5 Funciones y Primitivas
6 Visualización
7 / 70
Introducción Conceptos Cámara Sintética Arquitectura Funciones y Primitivas Visualización
Preeliminares
parte 1
I Existen estados que funcionan como booleanos. Estos se activan con las
funciones glEnable() y glDisable().
8 / 70
Introducción Conceptos Cámara Sintética Arquitectura Funciones y Primitivas Visualización
Preeliminares
parte 2
9 / 70
Introducción Conceptos Cámara Sintética Arquitectura Funciones y Primitivas Visualización
Preeliminares
Elementos de un Sistema Gráco
10 / 70
Introducción Conceptos Cámara Sintética Arquitectura Funciones y Primitivas Visualización
Preeliminares
Elementos de un Sistema Gráco
I Look up table (LUT): Contiene todos los colores disponibles en nuestro sistema.
A menudo nos referimos a la paleta. En general se trabaja con (RGB).
I Convertidor D/A: Convierte la información contenida en el frame buer a nivel
de bits es digital en analógica para poder ser procesada por un CRT (tubo de rayos
catódicos) y proyectada en la pantalla.
I Salidas: Después del convertidor, visualización en nuestra pantalla.
I Pixel: Es la unidad mínima de pantalla, de manera que el conglomerado de pixeles
con sus colores da lugar a una imagen.
11 / 70
Introducción Conceptos Cámara Sintética Arquitectura Funciones y Primitivas Visualización
Anotaciones
12 / 70
Introducción Conceptos Cámara Sintética Arquitectura Funciones y Primitivas Visualización
Caso de Estudio
Si suponemos una resolución de 800 x 600 píxeles; 800 píxeles/la x 600 las x
24 bits/píxel = 1.37 Megabytes de memoria para el frame buer.
Dado que el color real implica 256 posibles valores de rojo, 256 de verde y 256 de
azul por píxel, esto implica un byte/píxel para cada una de estas componentes,
es decir, 3 bytes por píxel.
13 / 70
Introducción Conceptos Cámara Sintética Arquitectura Funciones y Primitivas Visualización
Ejemplos en OpenGL
14 / 70
Introducción Conceptos Cámara Sintética Arquitectura Funciones y Primitivas Visualización
Contenido
1 Introducción
2 Conceptos
3 Cámara Sintética
4 Arquitectura
5 Funciones y Primitivas
6 Visualización
15 / 70
Introducción Conceptos Cámara Sintética Arquitectura Funciones y Primitivas Visualización
El módelo de la cámara
parte 1
OpenGL utiliza este modelo sintético para dibujar una escena que puede ser 3D
pero su proyección en un plano es 2D (plano de proyección).
16 / 70
Introducción Conceptos Cámara Sintética Arquitectura Funciones y Primitivas Visualización
El módelo de la cámara
parte 2
I OBJETOS. Que formen parte de nuestro mundo y que precisamente serán los
lmados por nuestra cámara. Se caracterizan por sus atributos de color, material,
grado de transparencia, etc.
17 / 70
Introducción Conceptos Cámara Sintética Arquitectura Funciones y Primitivas Visualización
QUIZ
18 / 70
Introducción Conceptos Cámara Sintética Arquitectura Funciones y Primitivas Visualización
QUIZ
Pistas:
1. Conjunto de subrutinas, funciones y procedimientos (o métodos, en la programación
orientada a objetos) que ofrece cierta biblioteca para ser utilizado por otro software como
una capa de abstracción. Son usadas generalmente en las bibliotecas.
2. Estandar de software para la generación de grácos creado por Silicon Graphics.
3. Librería de acceso rápido a funciones de OpenGL usando comandos de bajo nivel
4. Librería que proporciona una interfaz independiente de la plataforma para crear
aplicaciones portables basadas en ventanas.
5. Dado que los efectos de los cambios efectuados con OpenGL perduran hasta
desactivarlos, se considera a OpenGL como una máquina de...
6. Función de OpenGL para activar estados.
7. Función de OpenGL para desactivar estados.
8. Es un tipo de memoria que almacena todo lo que va a ser dibujado antes de presentar la
información en pantalla.
9. Unidad mínima de pantalla de manera que un conglomerado de este o estos y sus colores
dan lugar a una imagen.
10. Junto con la profunidad es una de las características de este.
11. Es un modelo sintético para dibujar una escena que puede ser 2D o 3D
19 / 70
Introducción Conceptos Cámara Sintética Arquitectura Funciones y Primitivas Visualización
Contenido
1 Introducción
2 Conceptos
3 Cámara Sintética
4 Arquitectura
5 Funciones y Primitivas
6 Visualización
20 / 70
Introducción Conceptos Cámara Sintética Arquitectura Funciones y Primitivas Visualización
Pipeline gráco
parte 1
21 / 70
Introducción Conceptos Cámara Sintética Arquitectura Funciones y Primitivas Visualización
Pipeline gráco
parte 2
22 / 70
Introducción Conceptos Cámara Sintética Arquitectura Funciones y Primitivas Visualización
Pipeline gráco
parte 2
23 / 70
Introducción Conceptos Cámara Sintética Arquitectura Funciones y Primitivas Visualización
Pipeline gráco
parte 3
24 / 70
Introducción Conceptos Cámara Sintética Arquitectura Funciones y Primitivas Visualización
Pipeline gráco
parte 4
25 / 70
Introducción Conceptos Cámara Sintética Arquitectura Funciones y Primitivas Visualización
Pipeline de renderizado
parte 1
Por un lado tenemos el "vertex data", que describe los objetos de nuestra escena,
y por el otro, el "píxel data", que describe las propiedades de la escena que se
aplican sobre la imagen tal y como se representan en el buer.
26 / 70
Introducción Conceptos Cámara Sintética Arquitectura Funciones y Primitivas Visualización
Pipeline de renderizado
parte 2
27 / 70
Introducción Conceptos Cámara Sintética Arquitectura Funciones y Primitivas Visualización
Pipeline de renderizado
parte 3
28 / 70
Introducción Conceptos Cámara Sintética Arquitectura Funciones y Primitivas Visualización
Contenido
1 Introducción
2 Conceptos
3 Cámara Sintética
4 Arquitectura
5 Funciones y Primitivas
6 Visualización
29 / 70
Introducción Conceptos Cámara Sintética Arquitectura Funciones y Primitivas Visualización
donde:
I Prejo indica la librería de la que procede. Puede ser glut, gl, aux, glu.
I Raíz indica qué realiza la función.
I No. Argumentos y Tipos argumentos como vemos son opcionales. Los posibles
tipos se verán posteriormente.
30 / 70
Introducción Conceptos Cámara Sintética Arquitectura Funciones y Primitivas Visualización
31 / 70
Introducción Conceptos Cámara Sintética Arquitectura Funciones y Primitivas Visualización
Primitivas de diseño
parte 1
32 / 70
Introducción Conceptos Cámara Sintética Arquitectura Funciones y Primitivas Visualización
Primitivas de diseño
parte 2
GL_POINTS puntos
GL_LINES líneas
GL_TRIANGLES triángulos
GL_LINE_LOOP polilíneas cerradas
GL_TRIANGLE_FAN triángulos alrededor de un punto
GL_QUADS cuadriláteros
GL_QUAD_STRIP cuadriláteros encadenados
GL_POLYGON polígono convexo con cualquier número de vértices
33 / 70
Introducción Conceptos Cámara Sintética Arquitectura Funciones y Primitivas Visualización
Primitivas de diseño
parte 3
I Entre las sentencias glBegin y glEnd puede aparecer código adicional para
el cálculo de los vértices y para jar algunos atributos de las primitivas.
* glVertex * glColor
* glTextCoord * glIndex
* glNormal * glMaterial
* glCallList * glCallLists
* glEdgeFlag * glEvalCoord
34 / 70
Introducción Conceptos Cámara Sintética Arquitectura Funciones y Primitivas Visualización
Primitivas de diseño
parte 4
35 / 70
Introducción Conceptos Cámara Sintética Arquitectura Funciones y Primitivas Visualización
Primitivas de diseño
parte 5
I Los puntos son las primitivas más sencillas. Se pueden denir varios puntos
dentro de un solo bloque.
glBegin(GL_POINTS);
glVertex3f(0.0, 0.0, 0.0);
glVertex3f(50.0, 50.0, 50.0);
glEnd()
36 / 70
Introducción Conceptos Cámara Sintética Arquitectura Funciones y Primitivas Visualización
Primitivas de diseño
parte 6
I Existe una función que nos permite alterar el grosor de la línea. Esta función
se debe llamar fuera del bloque glBegin-glEnd.
void glLineWidth(GLfloat grosor)
grosor: grosor en píxeles de la línea.
37 / 70
Introducción Conceptos Cámara Sintética Arquitectura Funciones y Primitivas Visualización
Primitivas de diseño
parte 7
I Para los triángulos encadenados, cada nuevo punto sirve para incorporar un
nuevo triángulo al conjunto. No es necesario tener en cuenta el sentido,
OpenGL lo mantiene.
I Para los triángulos que giran alrededor de un vértice, el vértice inicial sirve
como central del conjunto y también OpenGL mantiene el sentido.
38 / 70
Introducción Conceptos Cámara Sintética Arquitectura Funciones y Primitivas Visualización
Primitivas de diseño
parte 8
glBegin(GL_TRIANGLES);
glVertex3f(0, 0, 0);
glVertex3f(50, 0, 0);
glVertex3f(25, 50, 0);
glVertex3f(25, 50, 0);
glVertex3f(75, 50, 0);
glVertex3f(50, 100, 0);
glEnd();
39 / 70
Introducción Conceptos Cámara Sintética Arquitectura Funciones y Primitivas Visualización
Primitivas de diseño
parte 9
glBegin(GL_TRIANGLES_STRIP);
glVertex3f(0, 0, 0);
glVertex3f(50, 0, 0);
glVertex3f(25, 50, 0);
glVertex3f(75, 50, 0);
glVertex3f(50, 100, 0);
glEnd();
40 / 70
Introducción Conceptos Cámara Sintética Arquitectura Funciones y Primitivas Visualización
Primitivas de diseño
parte 10
glBegin(GL_TRIANGLES_FAN);
glVertex3f(25, 50, 0);
glVertex3f(0, 0, 0);
glVertex3f(50, 0, 0);
glVertex3f(75, 50, 0);
glVertex3f(50, 100, 0);
glEnd();
41 / 70
Introducción Conceptos Cámara Sintética Arquitectura Funciones y Primitivas Visualización
Primitivas de diseño
parte 11
42 / 70
Introducción Conceptos Cámara Sintética Arquitectura Funciones y Primitivas Visualización
Primitivas de diseño
parte 12
43 / 70
Introducción Conceptos Cámara Sintética Arquitectura Funciones y Primitivas Visualización
Primitivas de diseño
parte 13
glBegin(GL_QUAD_STRIP);
glVertex3f(0, 0, 0);
glVertex3f(0, 50, 0);
glVertex3f(50, 50, 0);
glVertex3f(50, 0, 0);
glVertex3f(100, 50, 0);
glVertex3f(100, 0, 0);
glEnd();
44 / 70
Introducción Conceptos Cámara Sintética Arquitectura Funciones y Primitivas Visualización
Primitivas de diseño
parte 14
I Los triángulos son los polígonos más utilizados, pues cumplen todas las
condiciones, cualquier polígono puede descomponerse en un conjunto de
triángulos
glBegin(GL_POLYGON);
glVertex3f(0, 0, 0);
glVertex3f(25, 50, 0);
glVertex3f(50, 100, 0);
glVertex3f(75, 50, 0);
glVertex3f(50, 0, 0);
glEnd();
45 / 70
Introducción Conceptos Cámara Sintética Arquitectura Funciones y Primitivas Visualización
Primitivas de diseño
parte 15
46 / 70
Introducción Conceptos Cámara Sintética Arquitectura Funciones y Primitivas Visualización
QUIZ
Arquitectura, Funciones y Primitivas
47 / 70
Introducción Conceptos Cámara Sintética Arquitectura Funciones y Primitivas Visualización
QUIZ
Arquitectura, Funciones y Primitivas
48 / 70
Introducción Conceptos Cámara Sintética Arquitectura Funciones y Primitivas Visualización
Librerías de OpenGL
TAREA
INVESTIGACIÓN. Investigar qué signica el concepto de "anti-liassing" en el contexto
de los grácos por computadora.
Además descargar, probar y comentar los dos primeros códigos de ejemplo. Se deberá
hacer lo siguiente en base a esto:
1. Comentar las líneas de código
2. Investigar el algoritmo de la línea de Bresenham
*La investigación deberá presentarse escrito a mano y con lapicero. Además del contenido se evaluará la presentación
para contar como tarea completa.
49 / 70
Introducción Conceptos Cámara Sintética Arquitectura Funciones y Primitivas Visualización
Contenido
1 Introducción
2 Conceptos
3 Cámara Sintética
4 Arquitectura
5 Funciones y Primitivas
6 Visualización
50 / 70
Introducción Conceptos Cámara Sintética Arquitectura Funciones y Primitivas Visualización
Visualización de poligonos
parte 1
I Hemos visto como denir polígonos, lo que sigue es saber como se repre-
sentan en la pantalla.
I Por defecto, cuando estamos en la cara exterior del objeto, los vértices
aparecen en sentido anti-horario; cuando estamos en el interior en sentido
anti-horario.
51 / 70
Introducción Conceptos Cámara Sintética Arquitectura Funciones y Primitivas Visualización
Visualización de polígonos
parte 2
52 / 70
Introducción Conceptos Cámara Sintética Arquitectura Funciones y Primitivas Visualización
Visualización de polígonos
parte 3
53 / 70
Introducción Conceptos Cámara Sintética Arquitectura Funciones y Primitivas Visualización
Visualización de polígonos
parte 3
54 / 70
Introducción Conceptos Cámara Sintética Arquitectura Funciones y Primitivas Visualización
Visualización de polígonos
parte 3
55 / 70
Introducción Conceptos Cámara Sintética Arquitectura Funciones y Primitivas Visualización
Color
parte 1
56 / 70
Introducción Conceptos Cámara Sintética Arquitectura Funciones y Primitivas Visualización
Color
parte 2
I Los demás vértices representan los colores amarillo, magenta, cian, blanco
y negro.
I Sobre la línea que une dos colores (dos puntos) se encuentra toda la grad-
uación existente entre los dos.
57 / 70
Introducción Conceptos Cámara Sintética Arquitectura Funciones y Primitivas Visualización
Color
parte 3
I Un vez seleccionado el color, todo lo que se dibuje será de ese color, hasta
que se cambie a otro.
58 / 70
Introducción Conceptos Cámara Sintética Arquitectura Funciones y Primitivas Visualización
Color
parte
59 / 70
Introducción Conceptos Cámara Sintética Arquitectura Funciones y Primitivas Visualización
Color
parte 5
I La función glColor sirve para seleccionar el color con que se dibujan todos
los elementos que se diseñan a continuación.
I Puede haber primitivas como líneas o polígonos en las que cada vértice se
dibuje de un color.
60 / 70
Introducción Conceptos Cámara Sintética Arquitectura Funciones y Primitivas Visualización
Mi primer programa con OpenGL
61 / 70
Introducción Conceptos Cámara Sintética Arquitectura Funciones y Primitivas Visualización
Ventana OpenGL y coordenadas de pantalla
62 / 70
Introducción Conceptos Cámara Sintética Arquitectura Funciones y Primitivas Visualización
Ventana OpenGL y coordenadas de pantalla
63 / 70
Introducción Conceptos Cámara Sintética Arquitectura Funciones y Primitivas Visualización
Mi primer Figura
parte 1
# include <GLUT/glut.h>
// Rutina de dibujado (display)
void drawScene(void)
{
glOrtho(0.0, 100.0, 0.0, 100.0, -1.0, 1.0);
glClear(GL_COLOR_BUFFER_BIT);
glColor3f(0.0, 0.0, 0.0);
glBegin(GL_POLYGON);
glVertex3f(20.0, 20.0, 0.0);
glVertex3f(80.0, 20.0, 0.0);
glVertex3f(80.0, 80.0, 0.0);
glVertex3f(20.0, 80.0, 0.0);
glEnd();
glFlush();
}
// Rutina de inicialización
void setup(void)
{
glClearColor(1.0, 1.0, 1.0, 0.0);
}
64 / 70
Introducción Conceptos Cámara Sintética Arquitectura Funciones y Primitivas Visualización
Mi primer Figura
parte 2
65 / 70
Introducción Conceptos Cámara Sintética Arquitectura Funciones y Primitivas Visualización
Mi primer Figura
parte 3
int main(int argc, char **argv)
{
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_SINGLE|GLUT_RGB);
glutInitWindowSize(500, 500);
glutInitWindowPosition(100, 100);
glutCreateWindow("Cuadrado");
setup();
glutDisplayFunc(drawScene);
glutReshapeFunc(resize);
glutKeyboardFunc(keyInput);
glutMainLoop();
return 0;
}
66 / 70
Introducción Conceptos Cámara Sintética Arquitectura Funciones y Primitivas Visualización
¾Cómo construir otro tipo de formas?
67 / 70
Introducción Conceptos Cámara Sintética Arquitectura Funciones y Primitivas Visualización
¾Y en 3D?
68 / 70
Introducción Conceptos Cámara Sintética Arquitectura Funciones y Primitivas Visualización
Librerías de OpenGL
TAREA
LECTURA. Realizar una lectura de comprensión del documento PDF titulado "GLUT"
disponible en el directorio Web del curso y realizar un breve resumen* (min. 1 cuartilla)
que responda a las siguientes preguntas:
1. ¾Qué es GLUT?
2. ¾Cuál es su propósito?
3. ¾Qué funciones especícas cumple?
4. ¾Qué consideraciones especiales hay que tener en cuenta?
5. En base a la descripción de algunas funciones y la presentación de los ejemplos,
en tus palabras ¾Cómo es la forma de implementación de este tipo de código en
comparación con lo que conoces hasta ahora de programación?
*El resumen deberá presentarse escrito a mano y con lapicero. Además del contenido se evaluará la presentación
para contar como tarea completa.
69 / 70
Introducción Conceptos Cámara Sintética Arquitectura Funciones y Primitivas Visualización
70 / 70