Red de conocimiento informático - Material del sitio web - Cómo configurar el entorno de programación OpengGL en vs2013

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 archivos

X:\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>

{

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);

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>

glutSolidSphere(0.5, 16, 8);

glPopMatrix(); //Regresar a la posición original

glutSwapBuffers();

}

void spinDisplay(void)

{

giro = giro 2;

if (giro gt; 360)

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!