Download - Introduccion a La Libreria Grafica 02
5/13/2018 Introduccion a La Libreria Grafica 02 - slidepdf.com
http://slidepdf.com/reader/full/introduccion-a-la-libreria-grafica-02 1/53
Introducción a la librería
gráficaBladimir Díaz Campos
5/13/2018 Introduccion a La Libreria Grafica 02 - slidepdf.com
http://slidepdf.com/reader/full/introduccion-a-la-libreria-grafica-02 2/53
Funciones definidas en el
programaMensajes: Esta función es para tratar los
mensajes del sistema operativo como necesitemos.
Define y crea una ventana asociada a nuestro programa yesta asociada a Mensajes
Una tercera parte es el bucle básico de un programawindows, ejecutandose continuamente y procesandolos mensajes hasta que recibe el mensaje de terminar elprograma (lo lanzamos nosotros al destruir laventana con el comando PostQuitMessage(0);). Al salir deeste bucle el programa termina
5/13/2018 Introduccion a La Libreria Grafica 02 - slidepdf.com
http://slidepdf.com/reader/full/introduccion-a-la-libreria-grafica-02 3/53
Algunos conceptosNo hace falta bajarse OpenGL de ningún sitio, y para hacer
un programa, solo es necesario incluir "gl/gh.h" y "gl/glu.h" yañadir al proyecto las librerías opengl32.lib y glu32.lib
El buffer. Es un espacio de memoria reservado paraalmacenar algo. OpenGL usa varios bufferes. Los primeros ymás importantes son los que se usan para dibujar y el que
se usa para presentar en pantalla
5/13/2018 Introduccion a La Libreria Grafica 02 - slidepdf.com
http://slidepdf.com/reader/full/introduccion-a-la-libreria-grafica-02 4/53
Instalar la librería grafica en VS
2008
Ir a http://www.segmentationfault.es/2009/08/opengl-glut-visual-cpp/
"Archivos de inclusión".
5/13/2018 Introduccion a La Libreria Grafica 02 - slidepdf.com
http://slidepdf.com/reader/full/introduccion-a-la-libreria-grafica-02 5/53
5/13/2018 Introduccion a La Libreria Grafica 02 - slidepdf.com
http://slidepdf.com/reader/full/introduccion-a-la-libreria-grafica-02 6/53
Librerías relacionadas a OpenGL
GLU (OpenGL Utility Library )
GLUT (OpenGL Utility Toolkit )
Otras: Open Inventor-VTK
GLX, WGL, PGL, etc.
5/13/2018 Introduccion a La Libreria Grafica 02 - slidepdf.com
http://slidepdf.com/reader/full/introduccion-a-la-libreria-grafica-02 7/53
GLUT (OpenGL Utility Toolkit) Es una librería auxiliar a OpenGL que permite crear ventanas
y manejar dispositivos como el teclado y ratón y estádiseñada para integrarse completamente con OpenGL
5/13/2018 Introduccion a La Libreria Grafica 02 - slidepdf.com
http://slidepdf.com/reader/full/introduccion-a-la-libreria-grafica-02 8/53
Conceptos
La técnica de doble buffer, dibujamos en un buffer que no esvisible para que no se aprecie como se va haciendo nuestrodibujo y mientras presentamos el dibujo anterior (back
buffer y front buffer)Siempre deben ser mas de 24 dibujos segundo para que elojo no perciba el cambio y el movimiento sea suave.
Otro buffer importante es el de profundidad o z-buffer: En else guarda la profundidad de cada pixel al pintarlo (distancia
de lo que se pinta a la camara)Hay mas bufferes como el de estarcido (stencil) o el deacumulacion
5/13/2018 Introduccion a La Libreria Grafica 02 - slidepdf.com
http://slidepdf.com/reader/full/introduccion-a-la-libreria-grafica-02 9/53
Sistema de coordenadas
Asi, en pantalla, sera el eje Y la altura, el eje X el ancho y elespacio virtual que se adentra en la pantalla sera el eje Zpero con coordenadas negativas.
5/13/2018 Introduccion a La Libreria Grafica 02 - slidepdf.com
http://slidepdf.com/reader/full/introduccion-a-la-libreria-grafica-02 10/53
Orden de los puntosSi se hace en el sentido de las agujas del reloj o en sentidocontrario. Según el orden, el motor gráfico lo tomara comouna cara delantera o una cara trasera de un objeto
5/13/2018 Introduccion a La Libreria Grafica 02 - slidepdf.com
http://slidepdf.com/reader/full/introduccion-a-la-libreria-grafica-02 11/53
Maquina de estadosEs una forma elegante de indicar que las instrucciones de
OpenGL se ponen de forma secuencial y las anterioresinfluyen en las siguientes.
5/13/2018 Introduccion a La Libreria Grafica 02 - slidepdf.com
http://slidepdf.com/reader/full/introduccion-a-la-libreria-grafica-02 12/53
La nomenclatura de las ordenes
de OpenGLTodas empiezan por gl y continúan por la orden con la
primera en mayúscula
Tras esto hay una serie de caracteres que pueden estar ono, según la orden, y que significan el numero decoordenadas, el tipo, y una v en caso de que se pase a lafunción un puntero a los pará.
glVertex 3f (0.5,1.0,2.5);
Otra forma es
GLfloat vertices[] = {0.5,1.0,2.5}; glVertex 3fv (vertices);
5/13/2018 Introduccion a La Libreria Grafica 02 - slidepdf.com
http://slidepdf.com/reader/full/introduccion-a-la-libreria-grafica-02 13/53
Tipos de datos OpenGL
5/13/2018 Introduccion a La Libreria Grafica 02 - slidepdf.com
http://slidepdf.com/reader/full/introduccion-a-la-libreria-grafica-02 14/53
Primer dibujo
Las coordenadas del eje Z siempre a 0
Sobre la " f " con que termina la funcion glVertex
El parametro de la funcion glBegin(...)
GL_TRIANGLES
GL_POINTS
GL_LINES
glBegin(GL_TRIANGLES);
// Le digo a OpenGL el primer vertice del triangulo:glVertex3f(0, 1, 0); // El segundo vertice del triangulo:glVertex3f(-1, 0, 0); // El tercer vertice del triangulo:glVertex3f(1, 0, 0);glEnd();
5/13/2018 Introduccion a La Libreria Grafica 02 - slidepdf.com
http://slidepdf.com/reader/full/introduccion-a-la-libreria-grafica-02 15/53
Código
while(TRUE) // Se ejecuta continuamente.{Pinta(); // Funcion que pinta algo y se repite continuamente alestar aqui.
void Pinta(){ // Borro el buffer de atras (BackBuffer), donde voy a pintar:glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);
// Le digo a OpenGL que voy a pintar de este color, rojo:
glColor3f(1,0,0); // Le digo a OpenGL que voy a pintar y con triangulos:glBegin(GL_TRIANGLES); // Le digo a OpenGL el primer vertice de mi tr iangulo:glVertex3f(0, 0.5, 0); // El segundo vertice de mi triangulo:glVertex3f(-1, -0.5, 0); // El tercer vertice de mi triangulo:glVertex3f(1, -0.5, 0);glEnd();
// Con esta fucion cambio el grosor de las lineas // para que se vea mejor:glLineWidth(5); // Le digo a OpenGL que voy a pintar de este color, azul:glColor3f(0,0,1); // Le digo a OpenGL que voy a pintar y con lineas:glBegin(GL_LINES); // Linea del primer vertice al segundo:
glVertex3f(0, 0.5, 0);}
glVertex3f(-1, -0.5, 0); // Cambio de color para probar, ahora verde:glColor3f(0,1,0); // Linea del segundo vertice al tercero:glVertex3f(-1, -0.5, 0);glVertex3f(1, -0.5, 0); // Cambio de color de nuevo, ahora una mezcla que da amarillo:
glColor3f(1,1,0); // Linea del tercer vertice al primero de nuevo:glVertex3f(1, -0.5, 0);glVertex3f(0, 0.5, 0);glEnd();
// Ahora voy a marcar el centro // con un punto gordo para que se vea bien:glPointSize(15); // Y de color blanco:glColor3f(1,1,1); // Le digo a OpenGL que voy a pintar y con puntos:glBegin(GL_POINTS);glVertex3f(0, 0, 0);glEnd();
// Cambio los bufferes de modo que presento lo que he dibujado
en pantalla:SwapBuffers(DevContex);
5/13/2018 Introduccion a La Libreria Grafica 02 - slidepdf.com
http://slidepdf.com/reader/full/introduccion-a-la-libreria-grafica-02 16/53
5/13/2018 Introduccion a La Libreria Grafica 02 - slidepdf.com
http://slidepdf.com/reader/full/introduccion-a-la-libreria-grafica-02 17/53
OpenGL Visualización
5/13/2018 Introduccion a La Libreria Grafica 02 - slidepdf.com
http://slidepdf.com/reader/full/introduccion-a-la-libreria-grafica-02 18/53
Formato de la funcionesLos nombres de las funciones en estas librerías siguen lasiguiente convención:
{gl, glu, glut} <un nombre> [{d, f, u, … etc}] [v]
El prefijo gl indica que se trata de una función de la librería deOpenGL, el prefijo glu de una función de la librería GLU, y elprefijo glut es para las funciones de la GLUT
Ejemplos de funciones:
gluPerspective, glColor3f¸glutSwapBuffers, glMaterialf,
glMaterialfv… etc.
5/13/2018 Introduccion a La Libreria Grafica 02 - slidepdf.com
http://slidepdf.com/reader/full/introduccion-a-la-libreria-grafica-02 19/53
De vértices a píxeles
Coordenadas del objeto (x,y,z,w)
Coordenadas del ojo (eye)
Coordenadas de recorte
Coordenadas de dispositivo
Coordenadas de ventana (x,y)
Projection Transform
ModelView Transform
Perspective Transform
ViewPortTransform
5/13/2018 Introduccion a La Libreria Grafica 02 - slidepdf.com
http://slidepdf.com/reader/full/introduccion-a-la-libreria-grafica-02 20/53
Coordenadas del objeto
Es el sistema de coordenadas en que se define el objeto
5/13/2018 Introduccion a La Libreria Grafica 02 - slidepdf.com
http://slidepdf.com/reader/full/introduccion-a-la-libreria-grafica-02 21/53
Primitivas geométricas básicasglut {Wire | Solid }{Sphere, Cube, …}<parámetros>
5/13/2018 Introduccion a La Libreria Grafica 02 - slidepdf.com
http://slidepdf.com/reader/full/introduccion-a-la-libreria-grafica-02 22/53
Primitivas geométricas básicas
glut {Wire | Solid }{Sphere, Cube, …}<parámetros>Ejemplos:
glut WireSphere(radius, slices, stacks)
glutSolidTeapot(size)
glutWireSphere(radius, slices, stacks),glutSolidSphere(radius, slices, stacks)
glutWireCube(size), glutSolidCube(size)
glutWireCone(base, height, slices, stacks),glutSolidCone(base, height, slices, stacks)
glutWireDodecahedron(void), glutSolidDodecahedron(void)
glutWireOctahedron(void), glutSolidOctahedron(void)
glutWireTetrahedron(void), glutSolidTetrahedron(void)
5/13/2018 Introduccion a La Libreria Grafica 02 - slidepdf.com
http://slidepdf.com/reader/full/introduccion-a-la-libreria-grafica-02 23/53
Primitivas geométricas básicasModo Descripción
GL_POINTS Puntos individuales aislados
GL_LINES Cada par de puntos corresponde a una recta
GL_LINES_STRIP Cada par de puntos corresponde a una recta
GL_LINE_LOOP Segmentos de recta conectadosGL_TRIANGLES Cada tres puntos un triangulo
GL_QUADS Cada cuatro puntos un cuadrado
GL_POLYGON Un polígono
glBegin(GL_POINTS);glVertex3f(0,0,0);glVertex3f(0,1,0);glVertex3f(1,1,0);glVertex3f(1,0,0);glEnd();
(0,0,0) (1,0,0)
(1,1,0) (0,1,0)
5/13/2018 Introduccion a La Libreria Grafica 02 - slidepdf.com
http://slidepdf.com/reader/full/introduccion-a-la-libreria-grafica-02 24/53
Primitivas geométricas básicasModo Descripción
GL_POINTS Puntos individuales aislados
GL_LINES Cada par de puntos corresponde a una recta
GL_LINES_STRIP Cada par de puntos corresponde a una recta
GL_LINE_LOOP Segmentos de recta conectadosGL_TRIANGLES Cada tres puntos un triangulo
GL_QUADS Cada cuatro puntos un cuadrado
GL_POLYGON Un polígono
glBegin(GL_LINES);glVertex3f(0,0,0);glVertex3f(0,1,0);glVertex3f(1,1,0);glVertex3f(1,0,0);glEnd();
(0,0,0) (1,0,0)
(1,1,0) (0,1,0)
5/13/2018 Introduccion a La Libreria Grafica 02 - slidepdf.com
http://slidepdf.com/reader/full/introduccion-a-la-libreria-grafica-02 25/53
Primitivas geométricas básicasModo Descripción
GL_POINTS Puntos individuales aislados
GL_LINES Cada par de puntos corresponde a una recta
GL_LINES_STRIP Cada par de puntos corresponde a una recta
GL_LINE_LOOP Segmentos de recta conectadosGL_TRIANGLES Cada tres puntos un triangulo
GL_QUADS Cada cuatro puntos un cuadrado
GL_POLYGON Un polígono
glBegin(GL_LINE_STRIP);glVertex3f(0,0,0);glVertex3f(0,1,0);glVertex3f(1,1,0);glVertex3f(1,0,0);glEnd();
(0,0,0) (1,0,0)
(1,1,0) (0,1,0)
5/13/2018 Introduccion a La Libreria Grafica 02 - slidepdf.com
http://slidepdf.com/reader/full/introduccion-a-la-libreria-grafica-02 26/53
Primitivas geométricas básicasModo Descripción
GL_POINTS Puntos individuales aislados
GL_LINES Cada par de puntos corresponde a una recta
GL_LINES_STRIP Cada par de puntos corresponde a una recta
GL_LINE_LOOP Segmentos de recta conectadosGL_TRIANGLES Cada tres puntos un triangulo
GL_QUADS Cada cuatro puntos un cuadrado
GL_POLYGON Un polígono
glBegin(GL_LINE_LOOP);glVertex3f(0,0,0);glVertex3f(0,1,0);glVertex3f(1,1,0);glVertex3f(1,0,0);glEnd();
(0,0,0) (1,0,0)
(1,1,0) (0,1,0)
5/13/2018 Introduccion a La Libreria Grafica 02 - slidepdf.com
http://slidepdf.com/reader/full/introduccion-a-la-libreria-grafica-02 27/53
Primitivas geométricas básicasModo Descripción
GL_POINTS Puntos individuales aislados
GL_LINES Cada par de puntos corresponde a una recta
GL_LINES_STRIP Cada par de puntos corresponde a una recta
GL_LINE_LOOP Segmentos de recta conectadosGL_TRIANGLES Cada tres puntos un triangulo
GL_QUADS Cada cuatro puntos un cuadrado
GL_POLYGON Un polígono
glBegin(GL_TRIANGLES);glVertex3f(0,1,0);glVertex3f(1,1,0);glVertex3f(1,0,0);glEnd();
(1,0,0)
(1,1,0) (0,1,0)
5/13/2018 Introduccion a La Libreria Grafica 02 - slidepdf.com
http://slidepdf.com/reader/full/introduccion-a-la-libreria-grafica-02 28/53
Primitivas geométricas básicasModo Descripción
GL_POINTS Puntos individuales aislados
GL_LINES Cada par de puntos corresponde a una recta
GL_LINES_STRIP Cada par de puntos corresponde a una recta
GL_LINE_LOOP Segmentos de recta conectadosGL_TRIANGLES Cada tres puntos un triangulo
GL_QUADS Cada cuatro puntos un cuadrado
GL_POLYGON Un polígono
glBegin(GL_QUADS);glVertex3f(0,0,0);glVertex3f(0,1,0);glVertex3f(1,1,0);glVertex3f(1,0,0);glEnd();
(1,0,0)
(1,1,0)
(0,0,0)
(0,1,0)
5/13/2018 Introduccion a La Libreria Grafica 02 - slidepdf.com
http://slidepdf.com/reader/full/introduccion-a-la-libreria-grafica-02 29/53
Primitivas geométricas básicasModo Descripción
GL_POINTS Puntos individuales aislados
GL_LINES Cada par de puntos corresponde a una recta
GL_LINES_STRIP Cada par de puntos corresponde a una recta
GL_LINE_LOOP Segmentos de recta conectadosGL_TRIANGLES Cada tres puntos un triangulo
GL_QUADS Cada cuatro puntos un cuadrado
GL_POLYGON Un polígono
glBegin(GL_POLYGON);glVertex3f(0,0,0);glVertex3f(-0.5,1,0);glVertex3f(0.5,1.5,0);glVertex3f(1.5,1,0);glVertex3f(0,1,0);glEnd(); (1,0,0)
(1.5,1,0)
(0,0,0)
(0.5,1.5,0)
(-0.5,1,0)
5/13/2018 Introduccion a La Libreria Grafica 02 - slidepdf.com
http://slidepdf.com/reader/full/introduccion-a-la-libreria-grafica-02 30/53
De vértices a píxeles
Coordenadas del objeto (x,y,z,w)
Coordenadas del ojo (eye)
Coordenadas de recorte
Coordenadas de dispositivo
Coordenadas de ventana (x,y)
Projection Transform
ModelView Transform
Perspective Transform
ViewPortTransform
5/13/2018 Introduccion a La Libreria Grafica 02 - slidepdf.com
http://slidepdf.com/reader/full/introduccion-a-la-libreria-grafica-02 31/53
Coordenadas del mundoSistema de coordenadas en que se define la escena. Define
como se colocan los diferentes objetos en la escena.(x,y,z,w) T
mundo=(x,y,z,w)Tobjeto. M escena
M escena Pasa de coordenadas objeto a coordenadas mundo(rotaciones, traslaciones, escalados, etcétera)
5/13/2018 Introduccion a La Libreria Grafica 02 - slidepdf.com
http://slidepdf.com/reader/full/introduccion-a-la-libreria-grafica-02 32/53
Coordenadas del mundoPara colocar un par de objetos de dos maneras diferentes se
utilizan dos matrices Modelview (M) distintas.Para indicar a OpenGL que queremos trabajar con la matrizM:
glMatrixMode (GL_MODELVIEW);
Al principio de la ejecución del programa, M=i
5/13/2018 Introduccion a La Libreria Grafica 02 - slidepdf.com
http://slidepdf.com/reader/full/introduccion-a-la-libreria-grafica-02 33/53
Transformación de rotaciónLa función glRotatef(alpha, x, y, z)
Multiplica la matriz actual por la matriz de rotación de alphagrados alrededor del eje (x,y,z)
glRotatef(-90.0f, 1.0f, 0.0f, 0.0f)
5/13/2018 Introduccion a La Libreria Grafica 02 - slidepdf.com
http://slidepdf.com/reader/full/introduccion-a-la-libreria-grafica-02 34/53
Transformacion de traslaciónLa función glTranslatef(x,y,z)
Multiplica la matriz actual por la matriz de traslación con unvector (x,y,z)
glTranlatef(0,1,0)
5/13/2018 Introduccion a La Libreria Grafica 02 - slidepdf.com
http://slidepdf.com/reader/full/introduccion-a-la-libreria-grafica-02 35/53
Transformación de escaladoLa funcion glScale(sx,sy,sz)
Multiplica la matriz actual por la matriz de escalado defactores (sx,sy,sz)
gl Scalef(1,2.5,1)
5/13/2018 Introduccion a La Libreria Grafica 02 - slidepdf.com
http://slidepdf.com/reader/full/introduccion-a-la-libreria-grafica-02 36/53
Transformación de escaladoLa funcion glScale(sx,sy,sz)
Multiplica la matriz actual por la matriz de escalado defactores (sx,sy,sz)
gl Scalef(1,2.5,1)
5/13/2018 Introduccion a La Libreria Grafica 02 - slidepdf.com
http://slidepdf.com/reader/full/introduccion-a-la-libreria-grafica-02 37/53
Pila de matricesDado que las operaciones sobre las matrices son
acumulativas, es necesario tener una manera de recuperarel estado anterior de la matriz.
OpenGL dispone de una pila para cada matriz; para la matrizModelView el tamaño de esta pila es de al menos 32matrices, mientras que para la matriz Projection es de al
menos 2.glPushMatrix()
glPopMatrix()
5/13/2018 Introduccion a La Libreria Grafica 02 - slidepdf.com
http://slidepdf.com/reader/full/introduccion-a-la-libreria-grafica-02 38/53
De vértices a píxeles
Coordenadas del objeto (x,y,z,w)
Coordenadas del ojo (eye)
Coordenadas de recorte
Coordenadas de dispositivo
Coordenadas de ventana (x,y)
Projection Transform
ModelView Transform
Perspective Transform
ViewPortTransform
5/13/2018 Introduccion a La Libreria Grafica 02 - slidepdf.com
http://slidepdf.com/reader/full/introduccion-a-la-libreria-grafica-02 39/53
Coordenadas de ojoSistema de coordenadas en que se define la escenarespecto al punto de vista de la cámara.
(z,y,z,w)Tojo = (x,y,z,w)T
mundo . M punto_de_vista
Donde M punto_de_vista pasa de coordenadas de escena acoordenadas de ojo (rotación y traslación)
5/13/2018 Introduccion a La Libreria Grafica 02 - slidepdf.com
http://slidepdf.com/reader/full/introduccion-a-la-libreria-grafica-02 40/53
Punto de vistaPara definir un punto de vista, disponemos de la función:
void gluLookAt (eyeX, eyeY, eyeZ, centX, cenY, cenZ, vp_X,
vp_Y, vp_Z);donde eye corresponde a la posición dela cámara, cen corresponde al puntohacia donde mira la cámaray vp es un vector que define laorientación de la cámara. No podemosllamar a gluLookAt en cualquier
momento, puesto que tienepostmultiplicar la matriz ModelView (portanto, conviene llamarla lo primerode todo). El vector vp no puede serparalelo al vector formado por eye ycen, es más, debería serleperpendicular. Si no, el resultado esimpredecible
5/13/2018 Introduccion a La Libreria Grafica 02 - slidepdf.com
http://slidepdf.com/reader/full/introduccion-a-la-libreria-grafica-02 41/53
De vértices a píxeles
Coordenadas del objeto (x,y,z,w)
Coordenadas del ojo (eye)
Coordenadas de recorte
Coordenadas de dispositivo
Coordenadas de ventana (x,y)
Projection Transform
ModelView Transform
Perspective division
ViewPortTransform
5/13/2018 Introduccion a La Libreria Grafica 02 - slidepdf.com
http://slidepdf.com/reader/full/introduccion-a-la-libreria-grafica-02 42/53
Coordenadas de recorteCorresponde a las coordenadas del volumen de
visualización normalizado(x, y, z, w) T recorte = (x, y, z, w) T ojo . P
Donde P es una matriz de proyección
5/13/2018 Introduccion a La Libreria Grafica 02 - slidepdf.com
http://slidepdf.com/reader/full/introduccion-a-la-libreria-grafica-02 43/53
Tipo de proyecciónPara definir el tipo de proyección, tendremos que modificar la
matriz Projection(P)Para indicar a OpenGL que queremos trabajar con la matrizP se escribe:
glMatrixMode(GL_PROJECTION)
5/13/2018 Introduccion a La Libreria Grafica 02 - slidepdf.com
http://slidepdf.com/reader/full/introduccion-a-la-libreria-grafica-02 44/53
Proyección ortogonalEquivale a definir un volumen de visualización en forma de
caja alrededor del «ojo» de la camara (esto es podemos verdetrás). Para hacerlo se llama:
glOrtho (left, right, bottom, top, near, far)
5/13/2018 Introduccion a La Libreria Grafica 02 - slidepdf.com
http://slidepdf.com/reader/full/introduccion-a-la-libreria-grafica-02 45/53
Proyección de perspectivaPara conseguir una proyección perspectiva, se tiene lafunción:
glFrustum (left, right, bottom, top, near, far)
5/13/2018 Introduccion a La Libreria Grafica 02 - slidepdf.com
http://slidepdf.com/reader/full/introduccion-a-la-libreria-grafica-02 46/53
Proyección perspectivaOtra función sencilla es:
gluPerspective (alpha, aspect, near, far)
5/13/2018 Introduccion a La Libreria Grafica 02 - slidepdf.com
http://slidepdf.com/reader/full/introduccion-a-la-libreria-grafica-02 47/53
De vértices a píxeles
Coordenadas del objeto (x,y,z,w)
Coordenadas del ojo (eye)
Coordenadas de recorte
Coordenadas de dispositivo
Coordenadas de ventana (x,y)
Projection Transform
ModelView Transform
Perspective division
ViewPortTransform
5/13/2018 Introduccion a La Libreria Grafica 02 - slidepdf.com
http://slidepdf.com/reader/full/introduccion-a-la-libreria-grafica-02 48/53
Coordenadas de dispositivoSon el resultado de la selección de las coordenadas que
caen dentro del volumen de visualización normalizado.Aquí es donde se aplican los algoritmos de recorte
Corresponde a la foto en coordenadas del mundo
5/13/2018 Introduccion a La Libreria Grafica 02 - slidepdf.com
http://slidepdf.com/reader/full/introduccion-a-la-libreria-grafica-02 49/53
De vértices a píxeles
Coordenadas del objeto (x,y,z,w)
Coordenadas del ojo (eye)
Coordenadas de recorte
Coordenadas de dispositivo
Coordenadas de ventana (x,y)
Projection Transform
ModelView Transform
Perspective division
ViewPortTransform
5/13/2018 Introduccion a La Libreria Grafica 02 - slidepdf.com
http://slidepdf.com/reader/full/introduccion-a-la-libreria-grafica-02 50/53
Coordenadas de ventanaSon las coordenadas de ventana-vista, es decir, las
coordenadas de la pantallaSon el resultado de aplicar la transformación de viewport alas coordenadas del dispositivo
5/13/2018 Introduccion a La Libreria Grafica 02 - slidepdf.com
http://slidepdf.com/reader/full/introduccion-a-la-libreria-grafica-02 51/53
ViewPortPara definir el lugar donde se renderizará la foto sobre la
ventana de la aplicación, existe la función:glViewport (x,y,cx,cy)
Donde x, y corresponde a la posición del viewport y cx, cy altamaño
(x,y)cx
cy
5/13/2018 Introduccion a La Libreria Grafica 02 - slidepdf.com
http://slidepdf.com/reader/full/introduccion-a-la-libreria-grafica-02 52/53
ViewportPara mantener la proporcion de los objetos es impresendibleque la ventana-mundo y ventana-vista tengan la mismarelacion altura/ancho
5/13/2018 Introduccion a La Libreria Grafica 02 - slidepdf.com
http://slidepdf.com/reader/full/introduccion-a-la-libreria-grafica-02 53/53
ResumenComo se verá un objeto en la pantalla vendrá dado por:
La matriz del ModelView M, que define la colocación de losobjetos en la escena y el punto de vista (M = M escena . Mpunto_de_vista)
La matriz Projection P, que define el tipo de proyección
La posición del Viewport en coordenadas de la pantalla