Académique Documents
Professionnel Documents
Culture Documents
PRCTICA N01
Facultad de Ingeniera
Escuela Acadmico Profesional de Ingeniera en Informtica y Sistemas
Docente:
Asignatura:
Alumna:
Cdigo:
2010-35513
Ao de estudios:
Cuarto
Laboratorio
PRCTICA N01
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
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
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
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
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
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.