Está en la página 1de 10

INDICE

PORTADA.................................................................................1
INDICE.....................................................................................2
INTRODUCCIN......................................................................3
MARCO TERICO...................................................................3
DESARROLLO.........................................................................4
CDIGO FUENTE...................................................................4
CAPTURAS DE PANTALLA.....................................................8
CONCLUSIONES...................................................................10

INTRODUCCIN
El presente trabajo presenta la realizacin de un men que despliega las figuras
de un tringulo equiltero y un cuadrado, realizadas en el lenguaje de
programacin C++ sumada la especificacin del conjunto de libreras OpenGL, el
objetivo es manejar de forma adecuada las diferentes libreras, se conocern la
variedad de funciones utilizadas en la graficacion y plantear una solucin para
proyectar los resultados de una manera ordenada, para dicho orden se
implementa un men de opciones.

MARCO TERICO
El marco terico para realizar nuestro programa consiste en una serie de
funciones necesarias que a continuacin se describen:
glClear: Limpia los valores del buffer a los valores predeterminados.
glBegin: Delimita los vrtices de una primitiva.
glVertex: Especifica un vrtice.
glEnd: Delimita los vrtices que son de una primitiva.
glFlush: Fuerza le ejecucin de las funciones de OpenGl en un tiempo finito.
glutInit: Inicializa la librera GLUT.
glutInitDisplayMode: Programa el modo Display el modo inicial.
glutInitWindowSize: Establece el tamao de la ventana.
glutInitPosition: Establece la posicin de la ventana.
glutCreateWindow: Crea una ventana.
glutDisplayFunc: Programa el display llamado a la ventana.
glutMainLoop: Entra en el bucle de procesamiento de eventos GLUT.
glClearColor: Especifica los valores de limpieza para los buffers de color.
glColor3f: Programa el color actual.
glMatrixMode: Especifica que matriz es la matriz actual.
glLoadIdentity: Remplaza la matriz actual con la matriz de identidad.
glutOrtho2D: Define una matriz de proyeccin ortogrfica de 2D.

Informacin obtenida de la fuente:

https://www.opengl.org/sdk/docs/man2/xhtml/
2

DESARROLLO
Despus de investigar el marco terico necesario para realizar nuestro programa
comenzamos creando funciones tipo void para cada figura en las que con ayuda
de las instrucciones descritas en el marco terico fue posible realizarlas.
Con la instruccin glBegin se delimita el nmero de vrtices de la figura solo se
tiene que especificar un parmetro en este caso GL_TRIANGLES o
GL_POLYGON. Con la instruccin glVertex2f se especifican los vrtices para
formar la figura hay que especificar los valores. La instruccin glColor3f nos
permite darle color a la figura y la instruccin glFlush hace que estas instrucciones
de OpenGl se ejecuten.
Se implement una funcin init para poder trabajar de manera adecuada ya que
OpenGl trabaja a travs de matrices.
En el mtodo principal Main se cre el men para las figuras en consola cabe
destacar que para hacer esto fue necesario el uso del lenguaje de programacin
C++ se le solicita al usuario que introduzca la opcin deseada y al hacerlo
automticamente se muestra la figura correspondiente
Con las instrucciones glutInitWindowSize y glutInitWindowPosition se determinan
el tamao y posicin de la ventana donde se mostrar la figura. Haciendo uso de
un switch fue posible crear el men y a travs de la instruccin glutDisplayFunc se
ejecuta la funcin de la figura deseada.
A continuacin, se muestra el cdigo fuente del programa asi como algunas
capturas de pantalla de la ejecucin.

CDIGO FUENTE
//Librerias necesarias
#include <windows.h>
#include <C:\GLUT\include\GL\glut.h>
#include <GL/glut.h>
#include<iostream>
using namespace std;

void triangulo()//Funcion para el trinagulo


{
glClear(GL_COLOR_BUFFER_BIT);//Limpia valores del buffer
3

glBegin(GL_TRIANGLES);//Delimita los vertices


glColor3f(1.0, 0.0, 0.0);//Especifica valores para el color
glVertex2f(0.0, 0.8);//Especifica un vertice
glColor3f(0.0,1.0,0.0);
glVertex2f(-0.6, -0.2);
glColor3f(0.0,0.0,1.0);
glVertex2f(0.6, -0.2);
glEnd();//Delimita los vertices
glFlush();//Fuerza la ejecucion de open gl
}

void cuadrado()//Funcion para el cuadrado


{
glClear(GL_COLOR_BUFFER_BIT);//Limpia valores del buffer
glBegin(GL_POLYGON);//Delimita los vertices
glVertex2f(-0.5, -0.5);//Especifica un vertice
glVertex2f(-0.5, 0.5);
glVertex2f(0.5, 0.5);
glVertex2f(0.5,-0.5);
glEnd();//Delimita los vertices
glFlush();//Fuerza la ejecucion de openGl

void init()//Funcion init


{
glClearColor(0.0, 0.0, 0.0, 1.0);//Especifica valores para el buffer de color
glMatrixMode(GL_PROJECTION);//Especifica la matriz actual
4

glLoadIdentity();//Remplaza por la matriz de identidad


gluOrtho2D(-1.0, 1.0, -1.0, 1.0);//Define matriz de proyeccion
}
int main(int argc, char** argv)//Metodo main
{
int opc;//variable

cout<<"\nMENU DE FIGURAS";//Despliega un mensaje


cout<<"\n\n[1]Triangulo";
cout<<"\n\n[2]Cuadrado";
cout<<"\n\n[0]Salir";
cout<<"\n\nElige la figura: ";//Pide la opcion por teclado

cin>>opc;//Se lee la instruccion introducida

glutInit(&argc, argv);//Inicia la libreria GLUT


glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB);//Programa el modo Display
glutInitWindowSize(500, 500);//Establece el tamao de la ventana
glutInitWindowPosition(0, 0);//EStablece la posicion de la ventana

switch(opc)//Menu
{

case 1://Para opcion de triangulo


glutCreateWindow("Triangulo");//Crea la ventana triangulo
glutDisplayFunc(triangulo);//Llama el la funcion triangulo
init();//Llama la funcion init
5

glutMainLoop();//Entra al procesamiento

case 2://Para opcion de cuadrado


glutCreateWindow("Cuadrado");//Crea la ventana cuadrado
glutDisplayFunc(cuadrado);//Llama la funcion cuadrado
init();//Llama la funcion init
glutMainLoop();//Entra al procesamiento

case 0://Para opcion de salir


cout<<"\nUsted ha salido del programa";//Despliega un mensaje
break;//Sale del programa

}
}

CAPTURAS DE PANTALLA

CONCLUSIONES
Jose Luis Flores Esquivel
OpenGl es una herramienta que facilita la realizacin de programas como este ya
que cuenta con funciones realmente tiles y que sin duda nos permitieron hacer
esta prctica, pero si no se cuenta con un conocimiento previo de esto puede
resultar algo complicado adentrarse, es importante resaltar que su compatibilidad
con leguajes como C++ es muy buena porque nos permite crear muchas ms
cosas.
La realizacin de esta prctica me permiti empezar a conocer esta herramienta,
as como conocer un poco acerca de lo que trabaja la graficacion es bastante
interesante, aunque el programa puede resultar algo sencillo es realmente til.

Elas Edmundo Guzmn Solano

La creacin de estas figuras y la implementacin del men, inspiran mi curiosidad


a seguir progresando en las diferentes variantes de la programacin, ya que la
traficacin como una tcnica para realizar un grfico y al grafico como la
produccin de una representacin visual de un objeto creado atreves de distintos
mtodos, y el OpenGL es un mtodo bastante prometedor en una amplia gama de
dispositivos.

10

También podría gustarte