Cómo configurar el entorno de programación OpengGL en vs2013
1. Instale el kit de herramientas GLUT
1 Descargue los archivos de la biblioteca requeridos por OpenGL. Generalmente, puede optar por descargar la biblioteca glut (contiene todos los archivos necesarios)
<. p>2 Descomprimir Luego copie las dos bibliotecas de funciones estáticas obtenidas glut.lib y glut32.lib a la carpeta lib del directorio de archivosX:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\ lib
3 Coloque los dos archivos de biblioteca dinámica glut.dll y glut32.dll en la carpeta C:\Windows\system32 en el directorio del sistema operativo (sistema de 32 bits) o C:\Windows\ SysWOW64 ( sistema de 64 bits).
Por motivos de compatibilidad, lo mejor es copiar los archivos correspondientes en ambos directorios.
4 Copie el archivo de encabezado descomprimido glut.h al siguiente directorio:
X:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\include\GL
Consejo: Si no hay una carpeta GL en el directorio de inclusión, debe crearla manualmente
2. Configuración en VS2013
Cree una aplicación de consola Win32 en blanco
p>Agregue el directorio de inclusión al principio del código
#include lt;GL/glut.hgt;
Luego podrá editar su propio programa OpenGL
Por ejemplo: copie el siguiente código en el VS recién configurado
#include lt;GL/glut.hgt;
#include lt;stdlib.hgt; p>
#include lt;math.hgt;
#include lt;stdio.hgt;
static int año = 0, spin=0, día = 0 ;
estático GLint fogMode;
const int n = 100;
const GLfloat R = 1.0f;
const GLfloat Pi = 3.1415926536f ;
void DrawCircle()
{
int i;
glClear(GL_COLOR_BUFFER_BIT);
glBegin (GL_LINE_LOOP);
for (i = 0; i lt; n; i)
{
glColor3f(1.0, 0.0, 0.0); p>
glVertex2f(R*cos(2 * Pi / n*i), R*sin(2 * Pi / n*i));
}
glEnd ();
glFlush();
}
void init(vacío)
{
GLfloat position[] = { 0.5, 0.5, 3.0, 0.0 };
glEnable(GL_DEPTH_TEST); //Previene la oclusión
glLightfv(GL_LIGHT0, GL_POSITION, position);
p>glEnable(GL_LIGHTING);
glEnable(GL_LIGHT0);
{
GLfloat mat[3] = { 0.1745, 0.01175, 0.01175 } ;
glMaterialfv(GL_FRONT, GL_AMBIENT, mat);
mat[0] = 0.61424; mat[1] = 0.04136; mat[2] = 0.04136;
glMaterialfv(GL_FRONT, GL_DIFFUSE, mat);
mat[0] = 0,727811; mat[1] = 0,626959; mat[2] = 0,626959;
>glMaterialfv(GL_FRONT, GL_SPECULAR, mat);
glMaterialf(GL_FRONT, GL_SHININESS, 0.6*128.0);
}
glEnable(GL_FOG); p> p>
{
GLfloat fogColor[4] = { 0.5, 0.5, 0.5, 1.0 };
fogMode = GL_EXP
glFogi; (GL_FOG_MODE , fogMode);
glFogfv(GL_FOG_COLOR, fogColor);
glFogf(GL_FOG_DENSITY, 0.35);
glHint(GL_FOG_HINT, GL_DONT_CARE); p>
glFogf(GL_FOG_START, 1.0);
glFogf(GL_FOG_END, 5.0);
}
glClearColor(0.5, 0.9, 0.9, 1.0 ); /* color de niebla */
}
visualización vacía(void)
{
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
p>glColor3f(0.0, 1.0, 1.0);
glPushMatrix(); //Recuerda tu posición
glutSolidSphere(1.0, 20, 16); /* Dibujar el radio del sol, 20 de longitud, 16 de latitud*/
glRotatef(spin, 0.0, 1.0, 0.0); //Rotación, rotando alrededor de un vector en un ángulo determinado (el positivo es en sentido contrario a las agujas del reloj). )
glTranslatef(2.0, 1.0, 0.0);
glRotatef(spin, 1.0, 0.0, 0.0); //Revolución
glRectf(0.1, 0.1) , 0.5 , 0.5);
glColor3f(0.0, 0.0, 1.0);
glutWireSphere(0.2, 8, 8); /* Dibuja el primer asteroide*/
glColor3f(1.0, 0.0, 0.0);
glTranslatef(2.0, 1.0, 0.0);
glRotatef(2 * giro, 0.0, 1.0, 0.0); p> p>
glutSolidSphere(0.5, 16, 8);
glPopMatrix(); //Regresar a la posición original
glutSwapBuffers();
}
void spinDisplay(void)
{
giro = giro 2;
if (giro gt; 360) p >
giro = giro - 360;
glutPostRedisplay();
}
mouse vacío (botón int, estado int, int x, int y )
{
cambiar (
botón)
{
caso GLUT_LEFT_BUTTON:
if (estado == GLUT_DOWN)
glutIdleFunc(spinDisplay);
romper;
caso GLUT_MIDDLE_BUTTON:
if (estado == GLUT_DOWN)
glutIdleFunc(NULL);
romper;
predeterminado:
romper;
}
}
reforma del vacío(int w, int h)
{
glViewport(0, 0, (GLsizei)w, (GLsizei)h);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
gluPerspective(60.0, (GLfloat)w / (GLfloat)h, 0.5, 20.0);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
gluLookAt(0.0, 10.0, 10.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0);
}
teclado vacío( clave de carácter sin firmar, int x, int y)
{
interruptor (tecla) {
caso 'd':
día = (día 10) 360;
glutPostRedisplay();
descanso;
caso 'D':
día = (día - 10) 360;
glutPostRedisplay();
descanso;
caso 'y':
año = (año 5) 360;
glutPostRedisplay();
descanso;
caso 'Y':
año = (año - 5) 360;
glutPostRedisplay();
romper;
caso 27:
salir(0); ;
predeterminado:
break;
}
}
int main(int argc, char* * argv)
{
glutInit(amp; argc, argv);
glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB);
glutInitWindowSize( 400, 400);
glutInitWindowPosition(100, 100);
glutCreateWindow("Programación OpengGL--Yang Chao");
init(); /p>
//glutDisplay
Func(DrawCircle);
glutDisplayFunc(pantalla);
glutReshapeFunc(reshape);
//glutKeyboardFunc(teclado);
glutMouseFunc(mouse);
glutMainLoop();
return 0;
}
5 Si puede ejecutarse correctamente después de la compilación, ¡Significa que la configuración fue exitosa!