Вы находитесь на странице: 1из 18

GUIA DE BASICO DE OPENGL 1 Introduccion general

OpenGL esta definido como "Una interfaz de software para equipo fsico de grficos", son grficos de 3D y bibliotecas de modelado, que son de forma porttil y muy rpida. Con OpenGL se puede crear grficos de 3D elegantes y muy atractivos al igual que animaciones de tipo realidad virtual, con la calidad visual de un trazador de animaciones. La ventaja ms grande para usar OpenGL es el uso de instrucciones, estas instrucciones son muy amigables para un principiante. OpenGL se ha desarrollado muy rpidamente, ya que otros distribuidores y diseadores de grficos han aportado su experiencia y propiedad intelectual para desarrollar proyectos para observar el funcionamiento de OpenGL. OpenGL no es un lenguaje de programacin en C C++. Mas bien es una herramienta que en trminos de tecnologa de programacin se llama API (application program interface). Es un conjunto de libreras de ejecucin escritos en lenguaje C, que lo proporciona de una forma precompilada y ms sencilla. Cuando un programa esta escrito en OpenGL, se hace uso de llamadas de una de las funciones de OpenGL, la puesta de funcionamiento de un sistemas operativo (por ejemplo el sistema operativo Windows de Microsoft ) efecta las funciones de representacin grfica de 3D y de presentaciones en realidad virtual, la cual usted ve los resultados en su ventana al realizar una aplicacin. Los pasos para poner sus herramientas de compilador y vincularse a las bibliotecas de OpenGL correctas, se desvan de herramienta a herramienta y de plataforma a plataforma. Todo depende de algunas instrucciones graduales para Windows, Macintosh y Linux. En este caso nosotros utilizaremos el sistemas operativo Windows XP de Microsoft, sea cual se la versin, se mencionara el funcionamiento de algunas bibliotecas, la biblioteca de enlaces dinmicos de opengl32.dll, ubicado en el directorio de sistema de Windows. Sobre la mayora de las plataformas, la biblioteca de OpenGL es acompaada por la biblioteca de servicio pblico de OpenGL (GLU), que sobre el Windows est el glu32.dll, tambin ubicado en el directorio de sistema. GLU incluye funciones ms complejas programadas mediante el GL por ejemplo: definir un cilindro o un disco con un solo comando, tambin contiene funciones para trabajar con "splines" y operaciones con matrices. Otros comandos de GLU permiten crear conos, tazas de t y muchos ms. Hay algunos prototipos para todas funciones de OpenGL, los tipos y las macros son contenidos (por la convencin) en el archivo de encabezamiento gl.h. Si su programa usa las funciones de biblioteca glu32.dll entonces se requiere el archivo de encabezamiento glu.h. Estos archivos estn generalmente ubicados en un directorio especial en su ruta de inclusin. Por ejemplo, las siguientes instrucciones muestran las formas tpicas de encabezamientos iniciales para un programa comn de Windows que usa OpenGL:

#include<windows.h>

#include<gl/gl.h>

#include<gl/glu.h>

2 Importacin de los ejemplos de OpenGL de libros de texto al Visual Studio


Los pasos principales para importar un ejemplo son:

I. Ubicacin de ficheros y libreras 1. ubicar archivos de cabecera 2. ubicar archivos estticas 3. ubicar archivos dinmicos II. utilizacin de un proyecto de OpenGL trabajando con VisualStudio III. adaptar el cdigo fuente del ejemplo. las cuales se mencionaran mas delante cada una de ellas. Se puede trabajar con OpenGL utilizando cualquier plataforma, ya que las libreras existen dentro de Windows y en Linux . GL y GLU: ya mencionadas en capitulo anterior. Es importante subrayar que esas libreras son independientes de una plataforma. GLUT: Esta librera nos sirve para que haya una comunicacin entre el programa base de OpenGL y el sistemas operativo Windows. Permite utilizar funciones para el tratamiento de ventanas, teclado y ratn.

I. Ubicacin de ficheros y libreras Para el uso de OpenGL se mencionara en como utilizar bsicamente una aplicacin de OpenGL, se dividen en dos Partes. La 1 Parte es una serie de pasos en buscar descargas y/o instalar las bibliotecas de funciones gl, glu y glut de OpenGL. La 2 Parte es la seccin de pasos de cmo adaptar un programa escrito en openGL para ambiente de desarrollo Visual Studio. 1. Parte Hay dos pasos muy sencillos que son necesarios las cuales son indispensables: Paso I.En Visual Studio ya se encuentran integrados los ficheros de Cabecera, las bibliotecas dinmicas y las bibliotecas estticas esto es para el uso de OpenGL. Para actualizar o integrar los ficheros y las bibliotecas en caso de que no existan dichos archivos en

Visual Studio. De la red hay que descargas los Ficheros de cabecera, Bibliotecas dinmicas y Bibliotecas estticas necesarias. La direcciones (vigentes a la fecha de escritura del instructivo actual) que se sugieren son las siguientes: http://www.opengl.org/resources/libraries/glut/glut_downloads.php http://www.xmission.com/~nate/glut.html y descargar el archivo que tiene el nombre siguiente: glut-3.7.6-bin.zip (117 KB) Paso II.- En este paso se mencionaran en donde se encuentran comnmente los ficheros y las libreras Los ficheros y las bibliotecas ya forman parte y automtica del visual Studio al igual del sistema de Windows. Pero en caso de que no se encuentre en el directorio de sistema Windows, por medio del Internet se descarga para su instalacin respectiva de los ficheros, a continuacin se dan unos ejemplos de las rutas para la instalacin de las libreras y ficheros. 1. ubicar archivos de cabecera. Las libreras de funciones donde se genera las imgenes a partir de modelos 3D y ms otras libreras auxiliares. Ficheros de cabecera: gl.h, glut.h y glu.h copiarlos y pegarlos en las extensiones de: . . . \Microsoft Visual Studio 8\VC\PlatformSDK\include\gl Nota: La manera de sustituir el simbolo "..." en esa ruta para completarla depende de donde y en que unidad se haya instalado el Visual Studio. Por ejemplo puede ser en la unidad C: o D: o F o algn otro esto lo define el usuario.

2. ubicar archivos estticos. Para las bibliotecas estticas copiar los archivos opengl32.lib, glu32.lib y glut.lib y pegarlos en: ... \Microsoft Visual Studio 8\VC\PlatformSDK\lib (Ver la Nota anterior respecto la sustitucin del smbolo "...")

3. ubicar archivos dinmicos. Para las Bibliotecas dinmicas: opengl32.dll, glu32.dll, glut32.dll, copiar y pegar en: ...WINDOWS \ system32 Ya mentado posteriormente, para estar en la carpeta de system32 depende de la unidad de disco donde se haya instalado Windows XP, Windows 98 o algn otro, como por ejemplo: C: \WINDOWS \ system32. 2. BLOQUE Uso ilustrativo bsico de Visual Studio 2005 para aplicaciones de OpenGL

Paso A.- En el men de Inicio se ejecuta y se abre la aplicacin de Microsoft Visual Studio 2005, en la Figura 1 aparece la ventana que se muestra en la imagen cuando se ejecuta por primera vez Microsoft Visual Studio 2005.

Figura 1

Paso B.- Para empezar a usar por primera vez Microsoft Visual Studio y se quiera realizar un pequeo proyecto, primero se hace lo siguiente, se da clic en el men de File y se sigue el siguiente paso. File Project como se ve en la Figura 2

Figura 2

Paso C.- Una vez hecho esto, aparece el siguiente recuadro como en la Figura 3.

Figura 3 Cuando aparezca este recuadro hay que dar las especificaciones; <Enter_name>: sustituir con el nombre que uno desee darle. Location: se le da la direccin en donde tiene que guardar dicho documento.

Paso D.- Enseguida se realiza lo siguiente, hay que identificar a Win32 Console Application, como se muestra en la Figura 4

Figura 4 Ya hecho esto se le da click en OK. Paso E: En las figura 5 se muestra esta figura, solo se le da clic en Next.

Figura 5 En la Figura 6 mostrada se respeta las asignaturas de da de forma automtica, no se modifica nada, se dejan as como estn y se le da click en Finish.

Figura 6

Ya realizado lo anterior, ya esta listo pasa crear su programa de openGL. En la figura se muestra la ventana de aplicacin en la que se deber utilizar para las instrucciones correspondientes para su aplicacin de OpenGLcomo en la Figura 7.

Figura 7

Se tienen que visualizar en su parte derecha que hayan generado los archivos como en la Figura 8

Figura 8 Paso F: El siguiente paso es para haya reconocimiento de las libreras y aplicaciones que necesita para el programa de openGl y no haya surgimiento de muchos errores. Conforme a la figura 9 hay que realizar lo siguiente secuencia. File Add Existing Web Site

Figura 9

Despus hay que ir a la direccin de donde se encuentra las extensiones .h

Figura 10 Cuanto aparezca la imagen como ya mostrada anteriormente en la figura 10, hay que hacer lo siguiente, en: File System: (unidad donde este instalada Windows, tpica en C: \Archivos de Programa Microsoft Visual Studio 8 \VC \ PlatformSDK \ Include \ gl por ultimo hay que hacer click en la extensin de gl Como se muestra en la figura 11, 12 y 13 \

Figura 11

Figura 13

Figura 13

Un click en abrir ( Open ) y que ah se encuentran las directivas de extensin *.h, que son gl.h, glu.h, glut.h, glaux.h, estos son primordiales para los programas de openGL, en la ventana del lado izquierda deben de aparecer las directivas mencionadas anteriormente, esto es donde esta nombrada: Solution "NombreDeSuProyecto.cpp"(2 projects), semejante a la figura 14.

Figura 14.

Una vez realizado estos pasos se presentara un ejemplo para que se tenga idea de que es OpenGL y observar cuales son las aplicaciones que se realizan.

II. Utilizacin de un proyecto de OpenGL trabajando con Visual Studio Como primer ejemplo se proporciona un programa que se muestra a continuacin, copiar su programa y pegarlo en el programa "NombreDeSuProyecto.cpp" creado automticamente por el Wizard de los proyectos, cuyo nombre fue introducido por usuario en el Paso C. El programa debe situarse debajo de #include ``stdafx.h esto se visualiza en la figura 14. En la figura 14 se puede ver que esta marcado de color azul lo que se tiene automticamente en el programa "NombreDeSuProyecto.cpp", esto antes de realizar cambios.

Figura 15

Ejemplo 1: Un programa que requiere adaptacin

III.- adaptar el cdigo fuente del ejemplo Hay dos opciones para adaptar el cdigo fuente del Ejemplo 1 al programa "NombreDeSuProyecto.cpp". La primera opcin es una adaptacin del fragmento de NombreDeSuProyecto.cpp, que debe hacer en:
int _tmain(int argc, _TCHAR* argv[]) { return 0; }

En ella incluye los siguientes pasos: Primero lo que ha que hacer es copiar la ultima parte del programa que esta a partir de: int main(int argc, char** argv), y pegarlo antes de return 0;. Quedando de la siguiente manera:
//Prueba 1.ccp : Defines the entry point for the console application. // int _tmain(int argc, _TCHAR* argv[]) { return 0; }

La parte que esta de color rojo se deben de poner diagonales al inicio de cada lnea de instrucciones para que estos se muestren en forma de texto. Y las instrucciones que estn de color azul hay que realizarles algunos cambios, como son los siguientes dos lneas de instrucciones:
cambiarlo por glu gt lI n i ( c g r a & grnia r cudW e p tCt * e o l b ; ma ) ) v g r

Hay que observar que solo se le agrega (char **). Para este otro solo se le agrega (char *).
Mostrndose la figura 16 la forma que debe observarse al final de programa en la ventana de aplicacin.

La segunda opcion es que en que el programa tambien puede funcionar sin hacer ningun cambio que se menciono anteriormente, sin quitar o agregar otra cosa, dejarlo en su forma original, se hace mencion de estos cambios ya que despues seran de utilidad ante otros programas. Otro cambio basico que se tiene que realizar al programa, que es fundamental, independientemente que opcion de utilize, en las primeras tres lineas de intrucciones, como se muestran a continuacion, copiar y cortar:
#include <GL/gl.h> #include <GL/glu.h> #include <GL/glut.h>

Estas instrucciones hay que archivo stdafx.h, esto se la parte izquierda debajo de tiene por nombre Header visualiza en la figura

pagarlos en encuentran en la carpeta que Files, como se

Darle doble click

Al realizar todos los pasos dados, ya esta preparado para ejecutar el programa, para ejecutarlo primero hay que compilar. Por lo tanto hay que hacer la siguiente secuencia: Buil Buil Solution una vez que se haya mostrado que no hay errores y que haya compilado el programa, se ejecuta el programa con: Debug Start Debugging Con esto ya se muestra la ejecucin del programa.

A continuacin se proporcionan dos programas ms de aplicacin para OpenGL siguiendo los procedimientos anteriores.

Programa_2: Planetary System: planet.c


//Defines the entry point for the console application. #include "stdafx.h" static int year = 0, day = 0; void init(void) { glClearColor (0.0, 0.0, 0.0, 0.0); glShadeModel (GL_FLAT); } void display(void) { glClear (GL_COLOR_BUFFER_BIT);

glColor3f (1.0, 1.0, 1.0); glPushMatrix(); glutWireSphere(1.0, 20, 16); /* draw sun */ glRotatef ((GLfloat) year, 0.0, 1.0, 0.0); glTranslatef (2.0, 0.0, 0.0); glRotatef ((GLfloat) day, 0.0, 1.0, 0.0); glutWireSphere(0.2, 10, 8); /* draw smaller planet */ glPopMatrix(); glutSwapBuffers(); } void reshape (int w, int h) { glViewport (0, 0, (GLsizei) w, (GLsizei) h); glMatrixMode (GL_PROJECTION); glLoadIdentity (); gluPerspective(60.0, (GLfloat) w/(GLfloat) h, 1.0, 20.0); glMatrixMode(GL_MODELVIEW); glLoadIdentity(); gluLookAt (0.0, 0.0, 5.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0); } void keyboard (unsigned char key, int x, int y) { switch (key) { case 'd': day = (day + 10) % 360; glutPostRedisplay(); break; case 'D': day = (day - 10) % 360; glutPostRedisplay(); break; case 'y': year = (year + 5) % 360; glutPostRedisplay(); break; case 'Y': year = (year - 5) % 360; glutPostRedisplay(); break; default: break; } } //int main(int argc, char** argv) //{ //glutInit(&argc, argv); //glutInitDisplayMode (GLUT_DOUBLE | GLUT_RGB); //glutInitWindowSize (500, 500); //glutInitWindowPosition (100, 100); //glutCreateWindow (argv[0]); //init (); //glutDisplayFunc(display); //glutReshapeFunc(reshape); //glutKeyboardFunc(keyboard); //glutMainLoop(); //return 0; //} int _tmain(int argc, _TCHAR* argv[]) {

glutInit(&argc, (char **)argv); glutInitDisplayMode (GLUT_DOUBLE | GLUT_RGB); glutInitWindowSize (550, 550); glutInitWindowPosition (100, 100); glutCreateWindow ((char *)argv[0]); init (); glutDisplayFunc(display); glutReshapeFunc(reshape); //glutMouseFunc(mouse); glutMainLoop(); return 0; }

En el archivo stdafx.h debe de visualizarse de esta forma:


// stdafx.h : include file for standard system include files, // or project specific include files that are used frequently, but // are changed infrequently //

#pragma once #define WIN32_LEAN_AND_MEAN // Exclude rarely-used stuff from Windows headers #include <stdio.h> #include <tchar.h> // TODO: reference additional headers your program requires here #include <stdlib.h> //#include <GL/gl.h> //#include <GL/glu.h> #include <GL/glut.h> Si no se encuentra de esta forma realize los cambios correspondientes.

Programa_3: Drawing a Lit Sphere: light.c


void init(void) { GLfloat mat_specular[] = { 1.0, 1.0, 1.0, 1.0 }; GLfloat mat_shininess[] = { 50.0 }; GLfloat light_position[] = { 1.0, 1.0, 1.0, 0.0 }; glClearColor (0.0, 0.0, 0.0, 1.0); glShadeModel (GL_SMOOTH); glMaterialfv(GL_FRONT, GL_SPECULAR, mat_specular); glMaterialfv(GL_FRONT, GL_SHININESS, mat_shininess); glLightfv(GL_LIGHT0, GL_POSITION, light_position); glEnable(GL_LIGHTING); glEnable(GL_LIGHT0); glEnable(GL_DEPTH_TEST); } void display(void) {

glClear (GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); glutSolidSphere (1.0, 20, 16); glFlush (); } void reshape (int w, int h) { glViewport (0, 0, (GLsizei) w, (GLsizei) h); glMatrixMode (GL_PROJECTION); glLoadIdentity(); if (w <= h) glOrtho (-1.5, 1.5, -1.5*(GLfloat)h/(GLfloat)w, 1.5*(GLfloat)h/(GLfloat)w, -10.0, 10.0); else glOrtho (-1.5*(GLfloat)w/(GLfloat)h, 1.5*(GLfloat)w/(GLfloat)h, -1.5, 1.5, -10.0, 10.0); glMatrixMode(GL_MODELVIEW); glLoadIdentity(); } int main(int argc, char** argv) { glutInit(&argc, argv); glutInitDisplayMode (GLUT_SINGLE | GLUT_RGB | GLUT_DEPTH); glutInitWindowSize (500, 500); glutInitWindowPosition (100, 100); glutCreateWindow (argv[0]); init (); glutDisplayFunc(display); glutReshapeFunc(reshape); glutMainLoop(); return 0; }

el archivo stdafx.h debe de visualizarse de esta forma:


// stdafx.h : include file for standard system include files, // or project specific include files that are used frequently, but // are changed infrequently // #pragma once #define WIN32_LEAN_AND_MEAN // Exclude rarely-used stuff from Windows headers #include <stdio.h> #include <tchar.h> // TODO: reference additional headers your program requires here //#include <GL/gl.h> //#include <GL/glu.h> #include <GL/glut.h>

Вам также может понравиться