一、安装GLUT工具包
1下载OpenGL需要的库文件 ,一般可以选择下载glut库(内含所有必须文件)
2解压后将得到的glut.lib和glut32.lib这两个静态函数库复制到文件目录的lib文件夹下
X:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\lib
3将glut.dll,glut32.dll这两个动态库文件放到操作系统目录下面的C:\Windows\system32文件夹内(32位系统)或?C:\Windows\SysWOW64(64位系统)。
为了兼容性考虑,最好在这两个目录下都复制相应的文件。
4将解压得到的头文件glut.h复制到目录如下目录下:
X:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\include\GL
提示:如果在incluce目录下没有GL文件夹,则需要手动创建
二、VS2013中的配置
创建一个空白的Win32控制台应用程序
在代码最前面添加包含目录
#include
然后就可以编辑自己的OpenGL程序了
例如:复制如下代码到刚配置好的VS中
#include
#include
#include
#include
static int year = 0,spin=0, day = 0;
static 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 < n;="" ++i)="" {="" glcolor3f(1.0,="" 0.0,="" 0.0);="" glvertex2f(r*cos(2="" *="" pi="" n*i),="" r*sin(2="" *="" pi="" n*i));="" }="" glend();="" glflush();="" }="" void="" init(void)="" {="" glfloat="" position[]="{" 0.5,="" 0.5,="" 3.0,="" 0.0="" };="" glenable(gl_depth_test);="" 防止遮挡="" gllightfv(gl_light0,="" gl_position,="" position);="" 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);="" {="" 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);="" fog="" color="" */="" }="" void="" display(void)="" {="" glclear(gl_color_buffer_bit="" |="" gl_depth_buffer_bit);="" glcolor3f(0.0,="" 1.0,="" 1.0);="" glpushmatrix();="" 记住自己的位置="" glutsolidsphere(1.0,="" 20,="" 16);="" 画太阳半径、="" 20经度、16纬度*/="" glrotatef(spin,="" 0.0,="" 1.0,="" 0.0);="" 自转,绕着一个向量以给定角度旋转(正的为逆时针)="" gltranslatef(2.0,="" 1.0,="" 0.0);="" glrotatef(spin,="" 1.0,="" 0.0,="" 0.0);="" 公转="" glrectf(0.1,0.1,0.5,0.5);="" glcolor3f(0.0,="" 0.0,="" 1.0);="" glutwiresphere(0.2,="" 8,="" 8);="" 画第一颗小行星="" */="" glcolor3f(1.0,="" 0.0,="" 0.0);="" gltranslatef(2.0,="" 1.0,="" 0.0);="" glrotatef(2="" *="" spin,="" 0.0,="" 1.0,="" 0.0);="" glutsolidsphere(0.5,="" 16,="" 8);="" glpopmatrix();//回到原来的位置="" glutswapbuffers();="" }="" void="" spindisplay(void)="" {="" spin="spin" +="" 2;="" if="" (spin=""> 360)
spin = spin - 360;
glutPostRedisplay();
}
void mouse(int button,int state,int x,int y )
{
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;
}
}
void reshape(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);
}
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;
case 27:
exit(0);
break;
default:
break;
}
}
int main(int argc, char** argv)
{
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB);
glutInitWindowSize(400, 400);
glutInitWindowPosition(100, 100);
glutCreateWindow("OpengGL 程序设计--杨超");
init();
//glutDisplayFunc(DrawCircle);
glutDisplayFunc(display);
glutReshapeFunc(reshape);
//glutKeyboardFunc(keyboard);
glutMouseFunc(mouse);
glutMainLoop();
return 0;
}
5编译后能正确运行说明配置成功!