Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Guia de OpenGL
Guia 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>
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.
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;
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
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.
Site
File
Add
Existing
Web
Figura 9
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.
Figura 15
<GL/gl.h>
<GL/glu.h>
<GL/glut.h>
<stdlib.h>
{
switch (button) {
case GLUT_LEFT_BUTTON:
if (state == GLUT_DOWN)
glutIdleFunc(spinDisplay);
break;
case GLUT_MIDDLE_BUTTON:
if (state == GLUT_DOWN)
glutIdleFunc(NULL);
break;
default:
break;
}
}
/*
* Request double buffer display mode.
* Register mouse input callback functions
*/
int main(int argc, char** argv)
{
glutInit(&argc, argv);
glutInitDisplayMode (GLUT_DOUBLE | GLUT_RGB);
glutInitWindowSize (250, 250);
glutInitWindowPosition (100, 100);
glutCreateWindow (argv[0]);
init ();
glutDisplayFunc(display);
glutReshapeFunc(reshape);
glutMouseFunc(mouse);
glutMainLoop();
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:
glutInit(&argc, argv);
cambiarlo por
glutInit(&argc,(char **)argv);
glutCreateWindow (argv[0]);
cambiarlo por
Figura 16
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>
pagarlos en
encuentran en
la carpeta que
Files, como se
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.
{
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;
//}
#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.
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;
}