Introduccion a La Libreria Grafica 02
-
Upload
eveling-paz -
Category
Documents
-
view
238 -
download
0
Transcript of Introduccion a La Libreria Grafica 02
![Page 1: Introduccion a La Libreria Grafica 02](https://reader030.fdocumento.com/reader030/viewer/2022020800/5571fedc49795991699c2fc6/html5/thumbnails/1.jpg)
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
![Page 2: Introduccion a La Libreria Grafica 02](https://reader030.fdocumento.com/reader030/viewer/2022020800/5571fedc49795991699c2fc6/html5/thumbnails/2.jpg)
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
![Page 3: Introduccion a La Libreria Grafica 02](https://reader030.fdocumento.com/reader030/viewer/2022020800/5571fedc49795991699c2fc6/html5/thumbnails/3.jpg)
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
![Page 4: Introduccion a La Libreria Grafica 02](https://reader030.fdocumento.com/reader030/viewer/2022020800/5571fedc49795991699c2fc6/html5/thumbnails/4.jpg)
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".
![Page 5: Introduccion a La Libreria Grafica 02](https://reader030.fdocumento.com/reader030/viewer/2022020800/5571fedc49795991699c2fc6/html5/thumbnails/5.jpg)
5/13/2018 Introduccion a La Libreria Grafica 02 - slidepdf.com
http://slidepdf.com/reader/full/introduccion-a-la-libreria-grafica-02 5/53
![Page 6: Introduccion a La Libreria Grafica 02](https://reader030.fdocumento.com/reader030/viewer/2022020800/5571fedc49795991699c2fc6/html5/thumbnails/6.jpg)
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.
![Page 7: Introduccion a La Libreria Grafica 02](https://reader030.fdocumento.com/reader030/viewer/2022020800/5571fedc49795991699c2fc6/html5/thumbnails/7.jpg)
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
![Page 8: Introduccion a La Libreria Grafica 02](https://reader030.fdocumento.com/reader030/viewer/2022020800/5571fedc49795991699c2fc6/html5/thumbnails/8.jpg)
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
![Page 9: Introduccion a La Libreria Grafica 02](https://reader030.fdocumento.com/reader030/viewer/2022020800/5571fedc49795991699c2fc6/html5/thumbnails/9.jpg)
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.
![Page 10: Introduccion a La Libreria Grafica 02](https://reader030.fdocumento.com/reader030/viewer/2022020800/5571fedc49795991699c2fc6/html5/thumbnails/10.jpg)
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
![Page 11: Introduccion a La Libreria Grafica 02](https://reader030.fdocumento.com/reader030/viewer/2022020800/5571fedc49795991699c2fc6/html5/thumbnails/11.jpg)
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.
![Page 12: Introduccion a La Libreria Grafica 02](https://reader030.fdocumento.com/reader030/viewer/2022020800/5571fedc49795991699c2fc6/html5/thumbnails/12.jpg)
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);
![Page 13: Introduccion a La Libreria Grafica 02](https://reader030.fdocumento.com/reader030/viewer/2022020800/5571fedc49795991699c2fc6/html5/thumbnails/13.jpg)
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
![Page 14: Introduccion a La Libreria Grafica 02](https://reader030.fdocumento.com/reader030/viewer/2022020800/5571fedc49795991699c2fc6/html5/thumbnails/14.jpg)
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();
![Page 15: Introduccion a La Libreria Grafica 02](https://reader030.fdocumento.com/reader030/viewer/2022020800/5571fedc49795991699c2fc6/html5/thumbnails/15.jpg)
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);
![Page 16: Introduccion a La Libreria Grafica 02](https://reader030.fdocumento.com/reader030/viewer/2022020800/5571fedc49795991699c2fc6/html5/thumbnails/16.jpg)
5/13/2018 Introduccion a La Libreria Grafica 02 - slidepdf.com
http://slidepdf.com/reader/full/introduccion-a-la-libreria-grafica-02 16/53
![Page 17: Introduccion a La Libreria Grafica 02](https://reader030.fdocumento.com/reader030/viewer/2022020800/5571fedc49795991699c2fc6/html5/thumbnails/17.jpg)
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
![Page 18: Introduccion a La Libreria Grafica 02](https://reader030.fdocumento.com/reader030/viewer/2022020800/5571fedc49795991699c2fc6/html5/thumbnails/18.jpg)
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.
![Page 19: Introduccion a La Libreria Grafica 02](https://reader030.fdocumento.com/reader030/viewer/2022020800/5571fedc49795991699c2fc6/html5/thumbnails/19.jpg)
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
![Page 20: Introduccion a La Libreria Grafica 02](https://reader030.fdocumento.com/reader030/viewer/2022020800/5571fedc49795991699c2fc6/html5/thumbnails/20.jpg)
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
![Page 21: Introduccion a La Libreria Grafica 02](https://reader030.fdocumento.com/reader030/viewer/2022020800/5571fedc49795991699c2fc6/html5/thumbnails/21.jpg)
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>
![Page 22: Introduccion a La Libreria Grafica 02](https://reader030.fdocumento.com/reader030/viewer/2022020800/5571fedc49795991699c2fc6/html5/thumbnails/22.jpg)
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)
![Page 23: Introduccion a La Libreria Grafica 02](https://reader030.fdocumento.com/reader030/viewer/2022020800/5571fedc49795991699c2fc6/html5/thumbnails/23.jpg)
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)
![Page 24: Introduccion a La Libreria Grafica 02](https://reader030.fdocumento.com/reader030/viewer/2022020800/5571fedc49795991699c2fc6/html5/thumbnails/24.jpg)
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)
![Page 25: Introduccion a La Libreria Grafica 02](https://reader030.fdocumento.com/reader030/viewer/2022020800/5571fedc49795991699c2fc6/html5/thumbnails/25.jpg)
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)
![Page 26: Introduccion a La Libreria Grafica 02](https://reader030.fdocumento.com/reader030/viewer/2022020800/5571fedc49795991699c2fc6/html5/thumbnails/26.jpg)
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)
![Page 27: Introduccion a La Libreria Grafica 02](https://reader030.fdocumento.com/reader030/viewer/2022020800/5571fedc49795991699c2fc6/html5/thumbnails/27.jpg)
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)
![Page 28: Introduccion a La Libreria Grafica 02](https://reader030.fdocumento.com/reader030/viewer/2022020800/5571fedc49795991699c2fc6/html5/thumbnails/28.jpg)
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)
![Page 29: Introduccion a La Libreria Grafica 02](https://reader030.fdocumento.com/reader030/viewer/2022020800/5571fedc49795991699c2fc6/html5/thumbnails/29.jpg)
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)
![Page 30: Introduccion a La Libreria Grafica 02](https://reader030.fdocumento.com/reader030/viewer/2022020800/5571fedc49795991699c2fc6/html5/thumbnails/30.jpg)
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
![Page 31: Introduccion a La Libreria Grafica 02](https://reader030.fdocumento.com/reader030/viewer/2022020800/5571fedc49795991699c2fc6/html5/thumbnails/31.jpg)
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)
![Page 32: Introduccion a La Libreria Grafica 02](https://reader030.fdocumento.com/reader030/viewer/2022020800/5571fedc49795991699c2fc6/html5/thumbnails/32.jpg)
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
![Page 33: Introduccion a La Libreria Grafica 02](https://reader030.fdocumento.com/reader030/viewer/2022020800/5571fedc49795991699c2fc6/html5/thumbnails/33.jpg)
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)
![Page 34: Introduccion a La Libreria Grafica 02](https://reader030.fdocumento.com/reader030/viewer/2022020800/5571fedc49795991699c2fc6/html5/thumbnails/34.jpg)
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)
![Page 35: Introduccion a La Libreria Grafica 02](https://reader030.fdocumento.com/reader030/viewer/2022020800/5571fedc49795991699c2fc6/html5/thumbnails/35.jpg)
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)
![Page 36: Introduccion a La Libreria Grafica 02](https://reader030.fdocumento.com/reader030/viewer/2022020800/5571fedc49795991699c2fc6/html5/thumbnails/36.jpg)
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)
![Page 37: Introduccion a La Libreria Grafica 02](https://reader030.fdocumento.com/reader030/viewer/2022020800/5571fedc49795991699c2fc6/html5/thumbnails/37.jpg)
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()
![Page 38: Introduccion a La Libreria Grafica 02](https://reader030.fdocumento.com/reader030/viewer/2022020800/5571fedc49795991699c2fc6/html5/thumbnails/38.jpg)
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
![Page 39: Introduccion a La Libreria Grafica 02](https://reader030.fdocumento.com/reader030/viewer/2022020800/5571fedc49795991699c2fc6/html5/thumbnails/39.jpg)
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)
![Page 40: Introduccion a La Libreria Grafica 02](https://reader030.fdocumento.com/reader030/viewer/2022020800/5571fedc49795991699c2fc6/html5/thumbnails/40.jpg)
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
![Page 41: Introduccion a La Libreria Grafica 02](https://reader030.fdocumento.com/reader030/viewer/2022020800/5571fedc49795991699c2fc6/html5/thumbnails/41.jpg)
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
![Page 42: Introduccion a La Libreria Grafica 02](https://reader030.fdocumento.com/reader030/viewer/2022020800/5571fedc49795991699c2fc6/html5/thumbnails/42.jpg)
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
![Page 43: Introduccion a La Libreria Grafica 02](https://reader030.fdocumento.com/reader030/viewer/2022020800/5571fedc49795991699c2fc6/html5/thumbnails/43.jpg)
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)
![Page 44: Introduccion a La Libreria Grafica 02](https://reader030.fdocumento.com/reader030/viewer/2022020800/5571fedc49795991699c2fc6/html5/thumbnails/44.jpg)
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)
![Page 45: Introduccion a La Libreria Grafica 02](https://reader030.fdocumento.com/reader030/viewer/2022020800/5571fedc49795991699c2fc6/html5/thumbnails/45.jpg)
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)
![Page 46: Introduccion a La Libreria Grafica 02](https://reader030.fdocumento.com/reader030/viewer/2022020800/5571fedc49795991699c2fc6/html5/thumbnails/46.jpg)
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)
![Page 47: Introduccion a La Libreria Grafica 02](https://reader030.fdocumento.com/reader030/viewer/2022020800/5571fedc49795991699c2fc6/html5/thumbnails/47.jpg)
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
![Page 48: Introduccion a La Libreria Grafica 02](https://reader030.fdocumento.com/reader030/viewer/2022020800/5571fedc49795991699c2fc6/html5/thumbnails/48.jpg)
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
![Page 49: Introduccion a La Libreria Grafica 02](https://reader030.fdocumento.com/reader030/viewer/2022020800/5571fedc49795991699c2fc6/html5/thumbnails/49.jpg)
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
![Page 50: Introduccion a La Libreria Grafica 02](https://reader030.fdocumento.com/reader030/viewer/2022020800/5571fedc49795991699c2fc6/html5/thumbnails/50.jpg)
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
![Page 51: Introduccion a La Libreria Grafica 02](https://reader030.fdocumento.com/reader030/viewer/2022020800/5571fedc49795991699c2fc6/html5/thumbnails/51.jpg)
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
![Page 52: Introduccion a La Libreria Grafica 02](https://reader030.fdocumento.com/reader030/viewer/2022020800/5571fedc49795991699c2fc6/html5/thumbnails/52.jpg)
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
![Page 53: Introduccion a La Libreria Grafica 02](https://reader030.fdocumento.com/reader030/viewer/2022020800/5571fedc49795991699c2fc6/html5/thumbnails/53.jpg)
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