Tutorial basico opengl

Solo disponible en BuenasTareas
  • Páginas : 11 (2737 palabras )
  • Descarga(s) : 0
  • Publicado : 1 de febrero de 2011
Leer documento completo
Vista previa del texto
1. INTRODUCCIÓN A OPENGL: DIBUJANDO UNA TORTUGA CON OPENGL 1.1 ¿QUÉ ES OPENGL? Qué es OpenGL? OpenGL es una interfaz software de harware gráfico, es decir define las funciones que se pueden utilizar en una aplicación para acceder a las prestaciones de un dispositivo gráfico. Es un motor 3D cuyas rutinas están integradas en tarjetas gráficas 3D. Fue desarrollado por Sillicon Graphics, Inc. (SGI)con el afán de hacer un estándar de representación en 3D. Es compatible con prácticamente cualquier plataforma harware asi como con muchos lenguajes de programación (C, C++, Visual Basic, Visual Fortran, Java). 1.2 ABRIENDO UNA VENTANA CON OPENGL El objetivo de este primer ejercicio es abrir una ventana con OpenGL. Se describe como realizar el proceso en Visual C++, para otros entornos el procesoes similar. Para ello es necesario abrir un nuevo proyecto en Visual C++ del tipo Console Application. Para poder ejecutar las librerias GLUT de OpenGL es necesario incluir en los siguientes lugares, si no se encuentran ya, los ficheros que se indican (se pueden obtener en el web de la asignatura en: http://www.tecnun.es/asignaturas/grafcomp/openGL/files/): - glut32.dll se debe situar enwindows\system(32) - glut32.lib se debe situar en DevStudio\Vc\lib - glut.h se debe situar en DevStudio\Vc\include\gl También es necesario incluir las librerías opengl32.lib, glu32.lib y glut32.lib en la lista de librerías del proyecto, en el caso de Visual C++ se accede en Project > Settings > Link > Object/Library Modules. Se añade un fichero de tipo texto y nombre tecnunLogo.c, mediante File > New /TextFile. En esta práctica se va a trabajar en un único archivo con extensión llamado tecnunlogo.c cuyo código es el siguiente:
#include int main(int argc, char** argv) { glutInit(&argc, argv); glutInitDisplayMode(GLUT_RGB | GLUT_DEPTH | GLUT_DOUBLE); glutInitWindowSize(512, 512); glutInitWindowPosition(20, 20); glutCreateWindow("tecnunLogo"); glutDisplayFunc(display); glutMainLoop(); return 0; } Para poder utilizar las librerías OpenGL y GL Utility Toolkit (GLUT) es necesario incluir el archivo glut.h como se muestra en la primera línea de código. En la función main(), glutInit() es la función que inicializa la librería GLUT y negocia con el sistema de ventanas la apertura de una nueva ventana. Sus parámetros deben ser los mismos que los de la función main() sin modificar. Acontinuación, glutInitDisplayMode() define el modo en el que se debe dibujar la ventana. Sus parámetros, como en muchas de las funciones OpenGL, se definen con flags o máscaras de bits. En este caso, GLUT_RGB indica el tipo de modelo de color con el que se dibujará (Red-Green-Blue), GLUT_DEPTH indica que se debe incluir un buffer de profundidad y GLUT_DOUBLE que se debe utilizar un doble buffer. Antes decrear una ventana, es necesario definir sus propiedades. Con la función glutInitWindowSize() se define el tamaño de la ventana en píxeles (anchura y altura) y con la función glutInitWindowPosition(), la distancia horizontal y vertical con respecto de la esquina superior izquierda del monitor donde la ventana deberá aparecer. Finalmente, con la función glutCreateWindow() se crea propiamente la ventana,y el string que se pasa como argumento, es utilizado como nombre de la nueva ventana. Ahora que la ventana ha sido creada, es necesario mostrarla. Para ello la función main llama a la función glutDisplayFunc(). Esta función es la más importante de las funciones callback. Gracias a la definición de las funciones callback, GLUT hace posible una dinámica de programación de aplicaciones OpenGL. Unafunción callback será llamada por GLUT para hacer alguna operación especifica cada vez que se produzca un evento. En este caso, glutDisplayFunc(display), define que la función display que es pasada como argumento sea ejecutada cada vez que GLUT determine que la ventana debe ser dibujada (la primera vez que se muestra la ventana) o redibujada (cuando se maximiza, cuando se superponen varias...
tracking img