Vous êtes sur la page 1sur 18

Laboratorio

PRCTICA N01

Facultad de Ingeniera
Escuela Acadmico Profesional de Ingeniera en Informtica y Sistemas

Docente:

Ing. Carlos Acero Charaa

Asignatura:

Diseo asistido por computadora

Alumna:

Montes Albarracn, Andrea Isabel

Cdigo:

2010-35513

Ao de estudios:

Cuarto

Laboratorio

PRCTICA N01

INSTALACION DE OPENGL EN DEV C++


Ejecutar el Dev-C++ y seleccionar en File New Project En las opciones de New Project, seleccionar Multimedia glut y darle un nombre al proyecto. Despus Ok.

Es normal que debas elegir una localidad (directorio) donde guardar tu proyecto.

Laboratorio

PRCTICA N01

Una vez creado el proyecto, podrs compilar y ejecutar el cdigo (es un ejemplo que viene por default).

Laboratorio

PRCTICA N01

En la parte del browser de Clases, Project y Debug debers eliminar este archivo que el nuevo proyecto crea por default. Botn derecho en el main.cpp y eliminas el archivo (Remove file).

Una vez removido el archivo, te pedir que le des un nombre con el cual salvar tu archivo de proyecto (esto se te deja a tu eleccin).

Laboratorio

PRCTICA N01

Podrs notar que dicho archivo se ha eliminado (el proyecto conserva su nombre, de hecho habamos elegido que el proyecto se llamara Ejemplo1).

Podrs agregar nuevos archivos a tu proyecto Ejemplo1, botn derecho (Add to Project).

Debes seleccionar el archivo que vas a incluir en tu proyecto (en este caso se llama practica1).

Laboratorio

PRCTICA N01

Una vez realizado este paso, podrs notar que en el browser del proyecto, has agregado el archivo practica1.c a tu proyecto Ejemplo1. Si das clic al nombre del archivo practica1.c podrs agregar cosas al archivo, modificar, etc.

Laboratorio

PRCTICA N01

Ests listo ahora para compilar y ejecutar tu primer ejemplo de OpenGL. El archivo al ser ejecutado y no marcar errores lgicos, etc. se visualiza como a continuacin se muestra en la imagen.

Laboratorio

PRCTICA N01

OPENGL con librera GLUT


OpenGL: una API, no un lenguaje OpenGL no es un lenguaje de programacin Sigue la convencin de llamadas a C OpenGL se divide en tres libreras distintas: Librera auxiliar AUX (glaux): independiente de la plataforma Librera especfica OpenGL (gl) Librera de utilidades (glu): dibujo de esferas, discos, cilindros, etc. OpenGL define sus propios tipos de datos. GLbyte entero de 8 bits GLushort entero de 16 bits sin signo GLint entero de 32 bits GLdouble real de 64 bits Sintaxis de los comandos OpenGL Todas las funciones comienzan por gl Todas las constantes empiezan por GL Algunas funciones acaban con un sufijo (3f, 2d, etc.): El nmero indica el nmero de parmetros Punto en 2D: glVertex2f (x, y); Punto en 3D: glVertex3f (x, y, z); La letra indica el tipo de los parmetros (i: long integer; f: float; d: double; ub: unsigned char; etc.) Algunos comandos acaban en v: en lugar de pasar los valores individuales, se pasa un vector

Laboratorio

PRCTICA N01

valores individuales glColor3f (1, 1, 1); usando un vector float vectorcol[] = {1, 1, 1} glColor3fv (vectorcol); La librera AUX Fue creada para facilitar el aprendizaje de OpenGL Evita los detalles del entorno particular (Windows, Unix) creacin y manejo de las ventanas interaccin con el usuario No sirve para disear la interfaz final de la aplicacin Hace uso de la API nativa del entorno OpenGL no maneja ventanas ni gestiona eventos La librera GLUT Fue creada como ampliacin de la librera AUX Se le aadieron ms prestaciones como: Creacin de mens desplegables Administracin de varias ventanas Manejo de joystick y otros dispositivos de E/S Sigue siendo multi-plataforma (Unix, Linux, Mac-OS, Windows) La gran ventaja es que permite olvidarse de la programacin GUI bsica de una plataforma especfica, y centrarse exclusivamente en OpenGL No viene incluida en la distribucin oficial. Hay que descargarla aparte.

Laboratorio

PRCTICA N01

Primer ejemplo en OpenGL + GLUT

Laboratorio

PRCTICA N01

Dibujando formas

Laboratorio

PRCTICA N01

Ventana y volumen de trabajo En OpenGL siempre se pinta en 3D. Por defecto glut define un volumen de trabajo entre -1 y 1 en las tres dimensiones.

Laboratorio

PRCTICA N01

Definicin de la vista glViewport(0,0,500,250)

Laboratorio

PRCTICA N01

glViewport(125,125,125,125)

Laboratorio

PRCTICA N01

Objetos 3D La librera GLUT incluye una docena de objetos 3D Por ahora slo podemos ver su proyeccin paralela

Laboratorio

PRCTICA N01

Laboratorio

PRCTICA N01

Funciones
1. glClearColor(0,0,0,0) : Con esto se define el color con el que se borrara el buffer al hacer un glClear(). Los 3 primeros parmetros son las componentes R, G y B, siguiendo un rango de [0..1]. La ltima es el valor alpha. 2. glColor3f(1,1,1): Selecciona el color actual con el que dibujar. Parmetros R G y B, rango [0..1], as que estamos ante el color blanco.
3. glLoadIdentity():Con esto cargamos en la matriz actual la matriz identidad

(equivale aresetearla matriz). 4. glPointSize() : Con esta llamada definimos que cada uno de nuestros puntos deber tener un grosor con el tamao del pixeles que se desee en el momento de ser trasladada a pantalla.
5. glMatrixMode(GL_PROJECTION): Especifica la matriz actual para realizar la

composicin. En ogl las operaciones de rotacin, translacin, escalado, etc. se realizan a travs de matrices de transformacin. Dependiendo de lo que estemos tratando, hay tres tipos de matriz (que son los tres posiblesflagsque puede llevar de parmetro la funcin): matriz de proyeccin (GL_PROJECTION), matriz de modelo (GL_MODELVIEW) y matriz de textura (GL_TEXTURE). Con esta funcin indicamos a cual de estas tres deben afectar las operaciones. Concretamente,GL_PROJECTIONafecta a las vistas o perspectivas o proyecciones.
6. gluOrtho3D() : define una perspectiva ortonormal. Esto quiere decir que lo que

se ves ser una proyeccin paralela en uno de los planos definidos por los ejes. Los parmetros sirven para delimitar el volumen de vista y son, por este orden:x_mnima,x_mxima,y_mnima,y_mxima,z_mnima,z_mxima, (estos dos ltimos no son coordenadas como los cuatro primeros, son distancias desde el punto de vista, positivas hacia donde apunta y negativas hacia el lado contrario) considerando que, por defecto, el punto de vista est en el origen de coordenadas mirando hacia el eje negativo de z, estos valores son desplazamientos desde este punto. Con estos seis valores se define el volumen que incluir los objetos que se proyecten. 7. glClear(GL_COLOR_BUFFER_BIT) : Borra un buffer o una combinacin de varios. En este caso, borra el buffer de color (en realidad, cada componente R G y B tienen un buffer distinto, pero aqu los trata como el mismo), el que se pinta despus en pantalla. Para borrarlos utiliza el color que ha sido previamente definido en init() mediante glClearColor(), en este caso, el (0,0,0,0) es decir, pinta todo el buffer de negro. 8. glBegin(GL_POINTS) : comienza una secuencia de vrtices con los que se construirn primitivas. El tipo de primitivas viene dado por el parmetro de glBegin(). 9. glVertex2i():Esta funcin crea un vrtice situado en el origen de coordenadas del mundo es decir, x=y=0.

Laboratorio

PRCTICA N01

10. glFlush():Dependiendo del hardware, controladores, etc., ogl guarda los

comandos como peticiones en pila, para optimizar el rendimiento. El comandoglFlushcausa la ejecucin de cualquier comando que quede en espera en la pila.
11. glutInit(&argc, argv): Esta funcin es la que inicializa la GLUT y negocia con

el sistema de ventanas para abrir una. Los parmetros deben ser los mismosargcyargv,sin modificar, de lafuncin main().Adems, Glutentiende una serie de parmetros que pueden ser pasados por lnea de comandos. 12. glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB) : Define el modo en el que debe dibujar en la ventana. Los parmetros, como gran parte de las funciones que iremos viendo, se definen con flags o mscaras de bits. En este caso en concreto, GLUT_SINGLE indica que se debe usar un solo buffer y GLUT_RGB el tipo de modelo de color con el que se dibujar.
13. glutInitWindowSize():El ancho y alto de la nueva ventana. 14. glutInitWindowPosition():Posicin x e y de la esquina superior izquierda de la

nueva ventana, con respecto al escritorio en el que se trabaje.


15. glutCreateWindow(""):Esta funcin es la que propiamente crea la ventana y el

parmetro es el nombre de la misma.


16. glutDisplayFunc(display): Aqu se define el primercallback. La funcin

pasada como parmetro ser llamada cada vez que GLUT determine oportuno que la ventana debe serredibujada, como al maximizarse, poner otras ventanas por encima y despus quitarlas, etc.
17. glutMainLoop():Esta funcin cede el control del flujo del programa a GLUT

que, a partir de estos "eventos", ir llamando a las funciones que han sido pasadas comocallbacks.
18. glRectf (): Dibuja un rectngulo con las 4 coordenadas que se le asigne en los

parntesis.
19. glViewport(): Ajusta la vista a las dimensiones de la ventana 20. glViewport() : nos permitir establecer qu porcin de la ventana ser el rea

visualizable. 21. glutPostRedisplay() : hace que tras la actualizacin se dibuje el siguiente frame. Vamos a utilizar una variable global para indicar la posicin de la esfera, y otra para apuntar a la propia esfera: 22. glutIdleFunc(): que especifica la operacin que se realizar entre dos frames. 23. glutSwapBuffers (): pega la imagen en la ventana.

Vous aimerez peut-être aussi