Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Historia
3
2. Uso del OpenGL
10
3. Requisitos para programar
con OpenGL
11
3. Requisitos para programar
con OpenGL
12
4. Funcionalidad Extra
Extensiones
15
6. Tipos de datos
⚫ Son equivalentes:
• glVertex2i(1, 3);
• glVertex2f(1.0, 3.0);
⚫ Son equivalentes:
• glColor3f (1.0, 1.0, 1.0);
• float color_array[] = {1.0, 1.0, 1.0};
• glColor3fv (color_array);
17
7. Ejemplo de programa OpenGL
main ()
{
AbrirVentana();
glClearColor(0.0, 0.0, 0.0, 0.0);
glClear(GL_COLOR_BUFFER_BIT);
glColor3f (1.0, 1.0, 1.0);
glOrtho(-1.0, 1.0, -1.0, 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();
}
18
8. Primitivas Gráficas
⚫ Se construyen con:
• glBegin(GLenum mode)
• Lista de vértices
• glEnd()
⚫ Algunas estructuras requieren de un
único par glBegin()-glEnd(), y otras
requieren de varios.
⚫ Podemos encontrar 10 tipos de primitivas
en OpenGL
19
8. Primitivas Gráficas
⚫ glBegin(mode);
• glVertex3f(x0,y0,z0);
• glVertex3f(x1,y1,z1);
• glVertex3f(x2,y2,z2);
• glVertex3f(x3,y3,z3);
⚫ glEnd();
21
8. Primitivas Gráficas
Puntos
⚫ Suavizado de puntos
• para activarlo: glEnable(GL_POINT_SMOOTH)
• para desactivarlo: glDisable(GL_POINT_SMOOTH)
22
8. Primitivas Gráficas
Líneas
⚫ Grosor de la línea
• void glLineWidth(GLfloat width);
⚫ Patrón de línea
• void glLineStipple(GLint factor, GLushort pattern);
• factor: es el número de veces que un bit se repite
• pattern: el patrón de 16 bits a dibujar 0x0F0F
⚫ Es necesario activarlo/desactivarlo
• glEnable(GL_LINE_STIPPLE);
• glDisable(GL_LINE_STIPPLE);
23
8. Primitivas Gráficas
Líneas
0 0 F F
Binario =
0000 0000 1111 11
11
Patrón de
Línea =
Línea =
Un segmento
24
8. Primitivas Gráficas
Polígonos
25
8. Sistema de coordenadas
⚫ El mundo 3D de OpenGL
es dextrógiro Y
⚫ El observador siempre en
el origen, mirando hacia
el eje Z negativo
Z
26
9. Matrices
27
9. Matrices
...
glViewport (x,y,width,height);
...
glMatrixMode (GL_PROJECTION);
glFrustum (left,right,bottom,top,near,far);
...
glMatrixMode (GL_MODELVIEW); glTranslatef
(10, 10, 10);
...
28
9. Matrices
Proyección
far
near
(x,y) Y
width
(right,top)
Z
(left,bottom)
X
29
9. Matrices Proyección
⚫ Matriz de proyección:
• Podemos usar proyección perspectiva:
• void glFrustum( GLdouble left, GLdouble right,
GLdouble bottom, GLdouble top, GLdouble znear,
GLdouble zfar );
• void gluPerspective( GLdouble fovy, GLdouble
aspect, GLdouble zNear, GLdouble zFar );
• o proyección paralela:
• voidglOrtho( GLdouble left, GLdouble right,
GLdouble bottom, GLdouble top, GLdouble zNear,
GLdouble zFar );
30
9. Matrices
Proyección
32
9. Matrices
ModelView y Texturas
33
10. Buffers
34
11. Display Lists
glNewList(1, GL_COMPILE);
glBegin(GL_QUADS);
glVertex3f(x0,y0,z0);
glVertex3f(x1,y1,z1);
glVertex3f(x2,y2,z2);
glVertex3f(x3,y3,z3);
glEnd();
glEndList();
(0,0) 1 x (1,0) 37
12. Texturas
Creación de una textura
38
12. Texturas
Uso de las texturas
// Selecciona la textura
glBindTexture(GL_TEXTURE_2D, texture[0]); //activa la textura almacenada en texture[0]
glCallList(id); // id es un enero identificador del objeto a pintar en una Display List
39
13. Iluminación
40
14. Selección
41
14. Selección
42
15. Varios
43
16. Quadrics
⚫ Otras cuádricas:
• gluSphere
• gluCilynder
• gluPartialDisk
• gluCone
44
16. Quadrics
Texturas
⚫ Estilo de dibujo:
• void gluQuadricDrawStyle(GLUquadric* quad, GLenum draw);
• Con los valores de GLU_FILL,GLU_LINE, GLU_SILHOUETTE, y GLU_POINT, como valor de
draw
⚫ Estilo de normal:
• void gluQuadricNormals(GLUquadric* quad, GLenum normal);
• Con los valores de GLU_NONE, GLU_FLAT, and GLU_SMOOTH, como valor de normal
45