tutorial opengl para visual c parte1
TRANSCRIPT
Tutorial OpenGL para Visual C++ 2010 express
Visual C++
Para descargar Visual C++ 2010 express nosotros podemos ir a la siguiente página: Visual C++ 2010 Express (la descarga es gratuita).
Una vez instalado nosotros necesitamos de ciertos archivos para poder crear nuestros programas con OpenGL como son GLUT y GLEW.
GLUT y GLEW
Windows ya tiene en el sistema OpenGL y VisualStudio viene con las librerías de OpenGL pero ninguno de ellos viene con GLUT que es una librería que nos facilita la creación de nuestros programas en OpenGL y GLEW que son los archivos binarios de windows.
Nosotros podemos conseguir la más nueva versión de GLUT aquí GLUT 3.7.6 y la última versión de GLEW aquí GLEW.
Instalación de GLUT y GLEW
Después de descargar GLUT y GLEW nosotros deberemos de colocar los archivos siguientes en las direcciones dadas abajo:
Para 32-Bit OSglut32.dll -> C:\Windows\SYSTEM (No confundir con system32)glew32.dll -> C:\Windows\SYSTEM (No confundir con system32)glut32.lib -> C:\Program Files\Microsoft Visual Studio10.0\VC\libglew32.lib -> C:\Program Files\Microsoft Visual Studio10.0\VC\libglew32s.lib -> C:\Program Files\Microsoft Visual Studio10.0\VC\libglut.h -> C:\Program Files\Microsoft Visual Studio10.0\VC\include\glglew.h -> C:\Program Files\Microsoft Visual Studio10.0\VC\include\glwglew.h -> C:\Program Files\Microsoft Visual Studio10.0\VC\include\gl(si la carpeta gl no existe tenemos que crearla) Para 64-Bit OSglut32.dll -> C:\Windows\SYSTEM (No confundir con system32)glew32.dll -> C:\Windows\SYSTEM (No confundir con system32)glut32.lib -> C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\libglew32.lib -> C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\libglew32s.lib -> C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\libglut.h -> C:\Program Files (x86)\Microsoft Visual Studio10.0\VC\include\glglew.h -> C:\Program Files (x86)\Microsoft Visual Studio10.0\VC\include\glwglew.h -> C:\Program Files (x86)\Microsoft Visual Studio10.0\VC\include\gl(si la carpeta gl no existe tenemos que crearla)
Creando un proyecto de Visual C++ 2010
Aquí nosotros veremos los pasos para crear un proyecto nuevo y dentro escribir nuestro código Open GL:
Crear Nuevo proyecto (File ---> New ---> --->Project)
Tipo de proyecto: Win32 Console Aplication Visual C++Nombre del proyecto: Prog1OGL
Ahora nos saldrá el asistente para crear la aplicacionPresionamos en: Next. Después en los ajustes seleccionamos: Console application y Empty Project. Y Finalmente presionamos en: Finish.
Una vez Creado el proyecto necesitamos de un archivo donde escribir el codigoCrear Nuevo Archivo (Project ---> Add New Item)
Seleccionamos en: C++ File (.cpp) Visual C++Nombre de la clase: Inicio
Y finalmente ya tenemos donde comenzar a escribir nuestro código OpenGL.
Primer ejemplo de código Open GL
Como primer código crearemos una simple ventana dibujando dentro un triangulo 2D en OpenGLPrimero al principio de nuestro código nosotros debemos de incluir la cabecera glu.h pues esta es la que contiene los métodos OpenGL
//código 1 OpenGl
#include <GL/glut.h>
//Ahora definiremos los métodos que usaremos en nuestro códigovoid init(); //init inicializa todos los ajustes de graficos q tenga nuestra ventanavoid display();//display es el método que estará mostrando nuestros gráficosvoid reshape(int w,int h);//reshape es el método que adaptara los cambios de tamaño en la ventana//El main() es el método principal de nuestro códigoint main(){
/* glutInitDisplayMode()inicializa el modo de inicio de la pantalla:
GLUT_DOUBLE es un sistema para que el cálculo de cada nuevo fotograma no lleve un tiempo suficiente para provocar un molesto parpadea de la ventana, así, mientras uno se muestra, en el otro se hacen los cálculos. Para agregar mas opciones se usa el carácter “|”,GLUT_RGB define los colores que se usaran (red,green,blue)*/glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB);
/* glutInitWindowPosition()sirve para posicionar nuestra ventana en un lugar en nuestra pantalla*/glutInitWindowPosition(100,100);
/* glutInitWindowSize()sirve para fijar el tamaño de nuestra ventana*/glutInitWindowSize(500, 500);
/* glutCreateWindow()crea la ventana con las propiedades especificadas anteriormente le podemos pasar de parámetro un texto que sirve para dar el nombre nuestra ventana*/glutCreateWindow("Example Kyoo");
init();
/* glutReshapeFunc()sirve para asignar el método que GLUT ejecutara cuando se redimensione la ventana*/glutReshapeFunc(reshape);
/* glutDisplayFunc()sirve para asignar el método que GLUT ejecutara cada vez que haya que redibujar la ventana*/glutDisplayFunc(display);
glutIdleFunc(display);
/* glutMainLoop()Esta función provocará que todas las funciones GLUT que controlan funciones, se repitan cuando sea necesario, es decir, es un bucle inteligente, en otras palabras, es darle a GLUT el control sobre el programa*/glutMainLoop();
return 0;
}
void init(){/* selecciona el color de fondo*/glClearColor (0.0, 0.0, 1.0, 0.0);
}void reshape(int w, int h){
glMatrixMode(GL_PROJECTION);glLoadIdentity(); // resetear la matriz de proyeccionglViewport(0,0,w,h); // posicionar y asignar tamaño de
nuestro viewport
// asignar nuestro viewvolumegluPerspective(45.0f,w/h,0.1f,100.0f);
glMatrixMode(GL_MODELVIEW); //cambiar a la matriz de modelo}void display(){
glClear(GL_COLOR_BUFFER_BIT| GL_DEPTH_BUFFER_BIT); //limpiar el buffer de color y profundidad
glLoadIdentity(); //resetear la matriz de modelo
glTranslatef(0.0f,0.0f,-6.0f); //mueve los graficos que se dibujaran
glColor3f(1.0f,0.0f,0.0f); //selecciona color a usar para los graficos
glBegin(GL_QUADS); // Dibujar usando TriangulosglVertex3f( -1.0f, 1.0f, -1.5f);// Punto de arriba e izquierdaglVertex3f(-1.0f,-1.0f, -1.5f);// Punto de abajo e izquierdaglVertex3f( 1.0f,-1.0f, -1.5f);// Punto de abajo y derechaglVertex3f( 1.0f,1.0f, -1.5f);// Punto de arriba y derecha
glEnd() //fin del dibujo usando triangulos
glColor3f(1.0f,1.0f,0.0f); //seleccionar color a usar para los graficos
glBegin(GL_TRIANGLES); // Dibujar usando TriangulosglVertex3f( 0.0f, 1.0f, 0.0f);// Punto de ArribaglVertex3f(-1.0f,-1.0f, 0.0f);// Punto de abajo e izquierdaglVertex3f( 1.0f,-1.0f, 0.0f);// Punto de abajo y derecha
glEnd(); //fin del dibujo usando triangulos
glutSwapBuffers(); //doble buffer para evitar parpadeo
}