11
INDICE PORTADA.....................................1 INDICE......................................2 INTRODUCCIÓN................................3 MARCO TEÓRICO...............................3 DESARROLLO..................................4 CÓDIGO FUENTE...............................4 CAPTURAS DE PANTALLA........................8 CONCLUSIONES...............................10 1

Reporte

Embed Size (px)

DESCRIPTION

menu de graficacion

Citation preview

Page 1: Reporte

INDICE

PORTADA...............................................................................1

INDICE.....................................................................................2

INTRODUCCIÓN.....................................................................3

MARCO TEÓRICO..................................................................3

DESARROLLO........................................................................4

CÓDIGO FUENTE...................................................................4

CAPTURAS DE PANTALLA....................................................8

CONCLUSIONES..................................................................10

1

Page 2: Reporte

INTRODUCCIÓNEl presente trabajo presenta la realización de un menú que despliega las figuras de un triángulo equilátero y un cuadrado, realizadas en el lenguaje de programación C++ sumada la especificación del conjunto de librerías OpenGL, el objetivo es manejar de forma adecuada las diferentes librerías, se conocerán la variedad de funciones utilizadas en la graficacion y plantear una solución para proyectar los resultados de una manera ordenada, para dicho orden se implementa un menú de opciones.

MARCO TEÓRICOEl marco teórico para realizar nuestro programa consiste en una serie de funciones necesarias que a continuación se describen:

glClear: Limpia los valores del buffer a los valores predeterminados.

glBegin: Delimita los vértices de una primitiva.

glVertex: Especifica un vértice.

glEnd: Delimita los vértices que son de una primitiva.

glFlush: Fuerza le ejecución de las funciones de OpenGl en un tiempo finito.

glutInit: Inicializa la librería GLUT.

glutInitDisplayMode: Programa el modo Display el modo inicial.

glutInitWindowSize: Establece el tamaño de la ventana.

glutInitPosition: Establece la posición 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 proyección ortográfica de 2D.

2

Page 3: Reporte

Información obtenida de la fuente:

DESARROLLODespués de investigar el marco teórico 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 teórico fue posible realizarlas.

Con la instrucción glBegin se delimita el número de vértices de la figura solo se tiene que especificar un parámetro en este caso GL_TRIANGLES o GL_POLYGON. Con la instrucción glVertex2f se especifican los vértices para formar la figura hay que especificar los valores. La instrucción glColor3f nos permite darle color a la figura y la instrucción glFlush hace que estas instrucciones de OpenGl se ejecuten.

Se implementó una función init para poder trabajar de manera adecuada ya que OpenGl trabaja a través de matrices.

En el método principal Main se creó el menú para las figuras en consola cabe destacar que para hacer esto fue necesario el uso del lenguaje de programación C++ se le solicita al usuario que introduzca la opción deseada y al hacerlo automáticamente se muestra la figura correspondiente

Con las instrucciones glutInitWindowSize y glutInitWindowPosition se determinan el tamaño y posición de la ventana donde se mostrará la figura. Haciendo uso de un switch fue posible crear el menú y a través de la instrucción glutDisplayFunc se ejecuta la función de la figura deseada.

A continuación, se muestra el código fuente del programa asi como algunas capturas de pantalla de la ejecución.

CÓDIGO 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

{

3

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

Page 4: Reporte

glClear(GL_COLOR_BUFFER_BIT);//Limpia valores del buffer

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

4

Page 5: Reporte

glMatrixMode(GL_PROJECTION);//Especifica la matriz actual

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 tamaño 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

5

Page 6: Reporte

init();//Llama la funcion init

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

}

}

6

Page 7: Reporte

CAPTURAS DE PANTALLA

7

Page 8: Reporte

8

Page 9: Reporte

CONCLUSIONESJose Luis Flores Esquivel

OpenGl es una herramienta que facilita la realización de programas como este ya que cuenta con funciones realmente útiles y que sin duda nos permitieron hacer esta práctica, 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 más cosas.

La realización de esta práctica 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.

Elías Edmundo Guzmán Solano

La creación de estas figuras y la implementación del menú, inspiran mi curiosidad a seguir progresando en las diferentes variantes de la programación, ya que la traficación como una técnica para realizar un gráfico y al grafico como la producción de una representación visual de un objeto creado atreves de distintos métodos, y el OpenGL es un método bastante prometedor en una amplia gama de dispositivos.

9