Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Open GL
Open GL
Geométricos
COMPUTACIÓN
GRÁFICA
Dibujando Objetos Geométricos Introducción
Píxel
puntos, líneas y polígonos Vértice
Línea
Polígono
Dibujando con
OpenGL
Modo de dibujo
Especificando un color
Características
adicionales
Puntos
Líneas
Polígonos
Primitivas 2D
Primitivas I
Primitivas II
Ejercicios
Tablero de ajedrez
Dibujando con
Características adicionales OpenGL
Modo de dibujo
Líneas Características
adicionales
Polígonos Puntos
Líneas
Polígonos
Primitivas 2D
Primitivas 2D
Primitivas I Primitivas I
Primitivas II
Primitivas II
Ejercicios
Tablero de ajedrez
Tangram
1.2
Dibujando Objetos
Introducción Geométricos
1.3
Dibujando Objetos
Vértices Geométricos
Vertex
Un punto es representado por un conjunto de numeros en Introducción
Dibujando con
OpenGL realiza todos los cálculos OpenGL
Modo de dibujo
internos como si los vértices fueran Especificando un color
Ejercicios
Tablero de ajedrez
Tangram
1.4
Dibujando Objetos
Líneas Geométricos
Line
En OpenGL, una línea se refiere a un segmento de línea, no a Introducción
Dibujando con
OpenGL tiene maneras fáciles de OpenGL
Modo de dibujo
especificar una linea, una series de Especificando un color
Ejercicios
Tablero de ajedrez
Tangram
1.5
Dibujando Objetos
Polígonos Geométricos
Polygon
Un Polígono, es la area cerrada por un ciclo simple de
segmentos de líneas, donde los segmentos de linea son Introducción
Píxel
especificados por los vértices de sus extremos finales Vértice
Línea
Polígono
Dibujando con
OpenGL
Modo de dibujo
Especificando un color
Ejercicios
Tablero de ajedrez
Tangram
1.6
Dibujando Objetos
Polígonos Geométricos
Dibujando con
OpenGL
Modo de dibujo
Especificando un color
Características
adicionales
Puntos
Líneas
Polígonos
Primitivas 2D
Primitivas I
Primitivas II
Ejercicios
Note que OpenGL no restringe el numero de líneas que forman el Tablero de ajedrez
Tangram
polígono, además los polígonos no convexos también son dibujados,
pero al no poder ser dibujados con solo una secuencia cerrada de
líneas, puede que OpenGL no lo dibuje como usted esperaba.
1.7
Dibujando Objetos
Entorno de dibujo Geométricos
glutDisplayFunc(Display )
Dibujando con
OpenGL
void Display()
Modo de dibujo
{ Especificando un color
glClearColor(0.0,0.0,0.0,0.0);
Características
glClear(GL_COLOR_BUFFER_BIT); adicionales
Puntos
glBegin(Modo); Líneas
Polígonos
.
.
. Primitivas 2D
glEnd(); Primitivas I
Primitivas II
Ejercicios
glFlush();
Tablero de ajedrez
} Tangram
Especificación
void glBegin(GLenum mode);
..
.
void glEnd( void); Introducción
Píxel
Primitivas 2D
Primitivas I
Primitivas II
Ejercicios
Tablero de ajedrez
Tangram
1.9
Dibujando Objetos
Modo de dibujo Geométricos
Introducción
Píxel
Vértice
Línea
Polígono
Dibujando con
OpenGL
GL_TRIANGLES Trata cada terna de vértices como un triángulo Modo de dibujo
Especificando un color
independiente. Características
adicionales
GL_TRIANGLE_STRIP Dibuja un grupo conectado de triángulos. Puntos
Ejercicios
Tablero de ajedrez
Tangram
1.10
Dibujando Objetos
Modo de dibujo Geométricos
Características
adicionales
Puntos
Líneas
Polígonos
Primitivas 2D
Primitivas I
Primitivas II
Ejercicios
Tablero de ajedrez
Tangram
1.11
Dibujando Objetos
Dibujando Vértices Geométricos
Dibujando con
Especificación OpenGL
Modo de dibujo
void glVertex*(Argumentos); Especificando un color
Características
adicionales
* representa la cantidad y el sufijo para los argumentos que se Puntos
Ejercicios
glVertex4f(2.3, 1.0, -2.2, 2.0); Tablero de ajedrez
Tangram
1.12
Dibujando Objetos
Especificando un color Geométricos
Dibujando con
Por ejemplo para renderizar objetos de diversos colores, podemos OpenGL
Características
adicionales
establecer_color_actual(rojo); Puntos
dibujar_objeto(A); Líneas
Polígonos
dibujar_objeto(B);
Primitivas 2D
establecer_color_actual(verde); Primitivas I
dibujar_objeto(C); Primitivas II
establecer_color_actual(azul); Ejercicios
Tablero de ajedrez
dibujar_objeto(D); Tangram
1.13
Dibujando Objetos
Especificando un color Geométricos
Dibujando con
formato depende del numero de argumentos y el tipo de OpenGL
Primitivas 2D
componentes rojo, verde y azul respectivamente, y el cuarto Primitivas I
Ejercicios
Cuando solo se utilizan 3 argumentos, por defecto, alfa toma el Tablero de ajedrez
Introducción
Píxel
Vértice
Línea
Polígono
Dibujando con
OpenGL
Modo de dibujo
Especificando un color
Características
adicionales
Puntos
Líneas
Polígonos
Primitivas 2D
Primitivas I
Primitivas II
Ejercicios
Tablero de ajedrez
Tangram
1.15
Dibujando Objetos
Cambiando el tamaño de los puntos Geométricos
Para controlar el tamaño con el cual se renderizará un punto, Jhelly Pérez Núñez
Ejemplo Polígono
Dibujando con
Renderizar los cuatro vertices de un cuadrado, pero con diferente OpenGL
Modo de dibujo
color y tamaño. Especificando un color
Características
adicionales
glColor3f(1.0,0.0,1.0); Puntos
Líneas
glPointSize(1.0); Polígonos
Primitivas 2D
Primitivas I
glBegin(GL_POINTS); Primitivas II
glVertex2d(-0.5,0.5); Ejercicios
glVertex2d(0.5,0.5); Tablero de ajedrez
Tangram
glVertex2d(0.5,-0.5);
glVertex2d(-0.5,-0.5);
glEnd();
1.16
Dibujando Objetos
Cambiando el tamaño de los puntos Geométricos
Resultados
Una implementación de la porción de código mostrada
anteriormente da los siguientes resultados para los siguientes Introducción
valores de size Píxel
Vértice
Línea
Polígono
Dibujando con
OpenGL
Modo de dibujo
Especificando un color
Características
adicionales
Puntos
Líneas
Polígonos
Primitivas 2D
Primitivas I
Primitivas II
1.17
Dibujando Objetos
Líneas con diferentes patrones Geométricos
Con OpenGL, puedes especificar líneas con diferente ancho y líneas Jhelly Pérez Núñez
Especificación
void glLineWidth(GLfloat width);
Introducción
Píxel
width especifica el ancho con el cual las líneas son dibujadas. el valor Vértice
Dibujando con
Para hacer líneas con algún patrón, debemos utilizar la instrucción OpenGL
Modo de dibujo
glLineStipple() para definir un patrón, y después activarlo y Especificando un color
factor especifica el múltiplo para cada bit en la linea del patrón. por Primitivas II
ejemplo si factor es 3, entonces cada bit del patrón se utiliza 3 veces Ejercicios
Tablero de ajedrez
antes del siguiente bit del patrón. Tangram
glDisable(GL_LINE_STIPPLE);
1.19
Dibujando Objetos
Líneas con diferentes patrones Geométricos
Ejemplo
Renderizar líneas con cada uno de los patrones mencionados
anteriormente. Una implementación de la porción de código
mostrada anteriormente da los siguientes resultados para los Introducción
Píxel
siguientes valores de factor Vértice
Línea
Polígono
Dibujando con
OpenGL
Modo de dibujo
Especificando un color
Características
adicionales
Puntos
Líneas
Polígonos
Primitivas 2D
Primitivas I
Primitivas II
Ejercicios
Tablero de ajedrez
(1,0) (3,0) (6,0) Tangram
1.20
Dibujando Objetos
Cambiando el relleno de un polígono OpenGL Geométricos
Los polígonos son dibujados típicamente llenando todos los píxeles Jhelly Pérez Núñez
Introducción
Píxel
Vértice
Línea
Polígono
Dibujando con
OpenGL
Modo de dibujo
Especificando un color
Características
adicionales
Puntos
Líneas
Polígonos
Primitivas 2D
Primitivas I
solidos en los que hay una distinción obvia entre las partes que están
afuera y las que están adentro. por defecto ambas caras son
dibujadas de la misma manera. 1.21
Dibujando Objetos
Cambiando el relleno de un polígono OpenGL Geométricos
Para cambiar la forma en la cual se dibujan las caras de nuestro Jhelly Pérez Núñez
Especificación
void glPolygonMode(GLenum face, GLenum mode);
Introducción
face especifica el modo que se esta aplicando a los polígonos, el Píxel
Dibujando con
mode especifica como serán dibujado los polígonos, este argumento OpenGL
acepta alguno de los siguientes valores GL_POINT, GL_LINE, o Modo de dibujo
Especificando un color
GL_FILL. El valor inicial , por defecto, es GL_FILL para ambas caras Características
del polígono. adicionales
Puntos
Líneas
El formato para utilizar estas características es el siguiente Polígonos
Primitivas 2D
glPolygonMode(GL_FRONT_AND_BACK, GL_POINT); Primitivas I
Primitivas II
Ejercicios
glBegin(GL_POLYGON); Tablero de ajedrez
Tangram
glVertex2d(-0.5,0.5); glVertex2d(0.5,0.5);
glVertex2d(0.5,-0.5); glVertex2d(-0.5,-0.5);
glEnd();
1.22
Dibujando Objetos
Cambiando el relleno de un polígono OpenGL Geométricos
Ejemplo
Renderizar polígonos con cada uno de los modos
mencionados anteriormente. Una implementación de la
porción de código mostrada anteriormente da los siguientes Introducción
Píxel
resultados para los siguientes valores de mode Vértice
Línea
Polígono
Dibujando con
OpenGL
Modo de dibujo
Especificando un color
Características
adicionales
Puntos
Líneas
Polígonos
Primitivas 2D
Primitivas I
Primitivas II
Ejercicios
Tablero de ajedrez
GL_POINT GL_LINE GL_FILL Tangram
1.23
Dibujando Objetos
Cambiando el relleno de un polígono OpenGL Geométricos
Por defecto, los polígonos son dibujados con un patrón solido, pero Jhelly Pérez Núñez
Especificación
void glPolygonStipple(const GLubyte *mask );
Introducción
Píxel
mask define el patrón actual para llenar los polígonos, este Vértice
Línea
argumento es un puntero a un bitmap de 32 × 32, que es interpretado Polígono
como una mascara de ceros y unos. Donde aparece un 1 se dibuja el Dibujando con
OpenGL
pixel correspondiente en el relleno, y donde aparece un cero nada se Modo de dibujo
dibuja. Especificando un color
Ejemplo de mascara de 32 × 32 Características
adicionales
Puntos
Líneas
Polígonos
Primitivas 2D
Primitivas I
Primitivas II
Ejercicios
Tablero de ajedrez
Tangram
1.24
Dibujando Objetos
Cambiando el relleno de un polígono OpenGL Geométricos
Dibujando con
OpenGL
Modo de dibujo
GLubyte mosca[] = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, Especificando un color
0x03, 0x80, 0x01, 0xC0, 0x06, 0xC0, 0x03, 0x60,
Características
0x04, 0x60, 0x06, 0x20, 0x04, 0x30, 0x0C, 0x20,
adicionales
0x04, 0x18, 0x18, 0x20, 0x04, 0x0C, 0x30, 0x20,
0x04, 0x06, 0x60, 0x20, 0x44, 0x03, 0xC0, 0x22, Puntos
0x44, 0x01, 0x80, 0x22, 0x44, 0x01, 0x80, 0x22, Líneas
0x44, 0x01, 0x80, 0x22, 0x44, 0x01, 0x80, 0x22, Polígonos
0x44, 0x01, 0x80, 0x22, 0x44, 0x01, 0x80, 0x22,
0x66, 0x01, 0x80, 0x66, 0x33, 0x01, 0x80, 0xCC, Primitivas 2D
0x19, 0x81, 0x81, 0x98, 0x0C, 0xC1, 0x83, 0x30, Primitivas I
0x07, 0xe1, 0x87, 0xe0, 0x03, 0x3f, 0xfc, 0xc0, Primitivas II
0x03, 0x31, 0x8c, 0xc0, 0x03, 0x33, 0xcc, 0xc0,
0x06, 0x64, 0x26, 0x60, 0x0c, 0xcc, 0x33, 0x30, Ejercicios
0x18, 0xcc, 0x33, 0x18, 0x10, 0xc4, 0x23, 0x08, Tablero de ajedrez
0x10, 0x63, 0xC6, 0x08, 0x10, 0x30, 0x0c, 0x08, Tangram
0x10, 0x18, 0x18, 0x08, 0x10, 0x00, 0x00, 0x08 } ;
1.25
Dibujando Objetos
Cambiando el relleno de un polígono OpenGL Geométricos
Ejemplo
Renderizar polígonos con cada uno de los patrones mencionados
anteriormente. Una implementación utilizando GL_FILL y
GL_POLYGON_STIPPLE con dos patrones diferentes, se muestra a
continuación Introducción
Píxel
Vértice
Línea
Polígono
Dibujando con
OpenGL
Modo de dibujo
Especificando un color
Características
adicionales
Puntos
Líneas
Polígonos
Primitivas 2D
Primitivas I
Primitivas II
Ejercicios
Tablero de ajedrez
Tangram
1.26
Dibujando Objetos
Dibujando polígonos no convexos Geométricos
Dibujando con
OpenGL
Modo de dibujo
Especificando un color
Características
adicionales
Puntos
Líneas
Polígonos
Primitivas 2D
Primitivas I
Primitivas II
Ejercicios
Tablero de ajedrez
Tangram
1.27
Dibujando Objetos
Dibujando polígonos no convexos Geométricos
Implementamos lo anterior, con sus respectivos modos; las tres Jhelly Pérez Núñez
Introducción
Píxel
Vértice
Línea
Polígono
Dibujando con
OpenGL
Modo de dibujo
Especificando un color
Características
GL_POINT GL_LINE GL_FILL adicionales
Puntos
Líneas
Polígonos
Primitivas 2D
Primitivas I
Primitivas II
Ejercicios
Tablero de ajedrez
Tangram
polígonos).
1.29
Dibujando Objetos
Primitivas I Geométricos
Ejemplo
Introducción
Renderizar tres cuadrados como se Píxel
Vértice
muestra en la figura Línea
Polígono
1.30
Dibujando Objetos
Primitivas I Geométricos
Display()
glClearColor(0.0,0.0,0.0,0.0);
glClear(GL_COLOR_BUFFER_BIT);
glBegin(GL_TRIANGLE_STRIP); Características
glVertex2f(-0.2,-0.2); adicionales
glVertex2f(0.2,-0.2); Puntos
glVertex2f(-0.2,0.2);
Líneas
glVertex2f(0.2,0.2);
Polígonos
glEnd();
Primitivas 2D
glColor3f (1.0, 1.0, 0.0);
Primitivas I
glBegin(GL_POLYGON); Primitivas II
glVertex2f(0.8,0.4);
Ejercicios
glVertex2f(0.4,0.4);
Tablero de ajedrez
glVertex2f(0.4,0.8);
glVertex2f(0.8,0.8); Tangram
glEnd();
glFlush ();
1.31
Dibujando Objetos
Creando nuestras propias primitivas: Cuadrado Geométricos
características Características
adicionales
1 Se ubicará el cuadrado en base al vértice superior Puntos
Líneas
izquierdo (argumentos X , Y ) Polígonos
Primitivas 2D
2 Se renderizará el cuadrado en base a la medida su lado Primitivas I
Ejercicios
3 Se renderizará el cuadrado con un color especifico Tablero de ajedrez
Tangram
(argumentos R, V , A)
1.32
Dibujando Objetos
Creando nuestras propias primitivas: Cuadrado Geométricos
glColor3f(R,V,A) Introducción
Píxel
Vértice
glBegin(GL_QUADS); Línea
Polígono
glVertex2f(X, Y);
Dibujando con
glVertex2f(X + Lado, Y); OpenGL
Modo de dibujo
glVertex2f(X + Lado, Y - Lado ); Especificando un color
glVertex2f(X, Y - Lado ); Características
glEnd(); adicionales
Puntos
Líneas
} Polígonos
Primitivas 2D
Primitivas I
De esta manera el código de la escena anterior se reduce Primitivas II
Cuadrado(-0.8,-0.4,0.4,1.0,0.0,1.0);
1.33
Dibujando Objetos
Creando nuestras propias primitivas: Recta Geométricos
X0 , Y0 , X1 , Y1 ) Dibujando con
OpenGL
2 Se renderizará la recta con un color especifico Modo de dibujo
Especificando un color
(argumentos R, V , A) Características
adicionales
3 Se renderizará la recta con un ancho especifico Puntos
(argumento A) Líneas
Polígonos
glDisable(GL_LINE_STIPPLE);
}
1.35
Dibujando Objetos
Creando nuestras propias primitivas: Recta Geométricos
Introducción
Píxel
Vértice
Línea
Polígono
Dibujando con
OpenGL
Modo de dibujo
Especificando un color
Características
adicionales
Puntos
Líneas
Polígonos
Primitivas 2D
Primitivas I
Primitivas II
Ejercicios
Tablero de ajedrez
Tangram
1.36
Dibujando Objetos
Creando nuestras propias primitivas: Rectángulo Geométricos
(argumentos R, V , A) Líneas
Polígonos
Ejercicios
Tablero de ajedrez
Tangram
1.37
Dibujando Objetos
Creando nuestras propias primitivas: Rectángulo Geométricos
glPointSize(G); Polígono
Ejemplo
Construir la siguiente escena, utilizando las primitivas que
codificaron anteriormente
Introducción
Píxel
Vértice
Observaciones Línea
Polígono
Características
colores deseados adicionales
Puntos
Tener en cuenta el orden Líneas
Polígonos
en el que se crean los
Primitivas 2D
objetos, ya que Primitivas I
Primitivas II
visualizamos en orden
Ejercicios
contrario a su creación Tablero de ajedrez
Tangram
1.39
Dibujando Objetos
Creando nuestras propias primitivas: Rectángulo Geométricos
Una posible implementación para crear la escena pedida es Jhelly Pérez Núñez
glClearColor(1.0,1.0,1.0,0.0);
glClear(GL_COLOR_BUFFER_BIT);
Rectangulo(x1,S1,c1,0,1); Características
adicionales
Rectangulo(x2,S2,c2,0,1); Puntos
Líneas
Rectangulo(x3,S2,c2,0,1); Polígonos
Rectangulo(x4,S3,c3,0,1); Primitivas 2D
Rectangulo(x5,S4,c4,0,1); Primitivas I
Primitivas II
Cuadrado(-0.6,-0.3,0.1,1,0,0);
Ejercicios
Cuadrado(0.5,-0.3,0.1,1,0,0); Tablero de ajedrez
Cuadrado(-0.5,0.35,0.1,0,1,0); Tangram
Cuadrado(0.4,0.35,0.1,0,1,0);
Linea(x6,x7,x8,10,13,2);
1.40
Dibujando Objetos
Ajedrez Geométricos
El ajedrez es un juego entre dos personas, cada una de las cuales Jhelly Pérez Núñez
Características
adicionales
Esto se hace amenazando la casilla que Puntos
Líneas
ocupa el rey con alguna de las piezas Polígonos
propias sin que el otro jugador pueda Primitivas 2D
proteger a su rey interponiendo una pieza Primitivas I
Primitivas II
entre su rey y la pieza que lo amenaza,
Ejercicios
mover su rey a un escaque libre o capturar Tablero de ajedrez
Introducción
Píxel
Vértice
Línea
Polígono
Dibujando con
OpenGL
Modo de dibujo
Especificando un color
Características
adicionales
Puntos
Líneas
Polígonos
Primitivas 2D
Primitivas I
Primitivas II
Ejercicios
Tablero de ajedrez
Tangram
1.42
Dibujando Objetos
Tablero de ajedrez Geométricos
Introducción
Píxel
Vértice
Línea
Polígono
Dibujando con
OpenGL
Modo de dibujo
Especificando un color
Características
adicionales
Puntos
Líneas
Polígonos
Primitivas 2D
Primitivas I
Primitivas II
Ejercicios
Tablero de ajedrez
Tangram
1.43
Dibujando Objetos
Tablero de ajedrez Geométricos
Introducción
Píxel
Vértice
Línea
Polígono
Dibujando con
OpenGL
Modo de dibujo
Especificando un color
Características
adicionales
Puntos
Líneas
Polígonos
Primitivas 2D
Primitivas I
Primitivas II
Ejercicios
Tablero de ajedrez
Tangram
1.44
Dibujando Objetos
Tangram Geométricos
1.45
Dibujando Objetos
Dibujando un tangram Geométricos
Introducción
Píxel
Vértice
Línea
Polígono
Dibujando con
OpenGL
Modo de dibujo
Especificando un color
Características
adicionales
Puntos
Líneas
Polígonos
Primitivas 2D
Primitivas I
Primitivas II
Ejercicios
Tablero de ajedrez
Tangram
1.46
Dibujando Objetos
Dibujando un tangram Geométricos
Introducción
Píxel
Vértice
Línea
Polígono
Dibujando con
OpenGL
Modo de dibujo
Especificando un color
Características
adicionales
Puntos
Líneas
Polígonos
Primitivas 2D
Primitivas I
Primitivas II
Ejercicios
Tablero de ajedrez
Tangram
1.47
Dibujando Objetos
Dibujando un tangram Geométricos
Ejercicio 6
Ahora practiquemos armando una de las mil y un posibles
figuras, por decir el cisne
Introducción
Píxel
Vértice
Línea
Polígono
Dibujando con
OpenGL
Modo de dibujo
Especificando un color
Características
adicionales
Puntos
Líneas
Polígonos
Primitivas 2D
Primitivas I
Primitivas II
Ejercicios
Tablero de ajedrez
Tangram
1.48