好不容易一个openGL的程序编译过关了,然后运行的时候弹出“计算机中丢失glut32.dll” 的提示框,于是就去C:\Windows\System32下去查看,果然没有这个文件,
然后就去下载了一个放进来就没有问题了。
这里给大家提供一下glut32.dll 吧~经本人使用,没有问题~~
留一下我的第一个openGL的源代码吧~~嘻嘻~~
#include <windows.h> #define GLUT_DISABLE_ATEXIT_HACK #include <GL/gl.h> #include <GL/glaux.h> #include <GL/glu.h> #include <gl/glut.h> #pragma comment(lib,"opengl32.lib") #pragma comment(lib,"GLU32.LIB") #pragma comment(lib,"glaux.lib") #pragma comment(lib,"GLUT32.LIB") #pragma comment(lib,"gdiplus.lib") int mouseX, mouseY; bool mouseButtonDown = false;//鼠标是否按下 float rotX = 16, rotY = 0;//初始化旋转角度,这里只用到了绕y轴旋转 //程序空闲时的处理函数 void Idle() { glutPostRedisplay();//标记当前窗口需要重新绘制 } void Resize( GLsizei iWidth, GLsizei iHeight ) { glViewport (0,0,iWidth,iHeight); glMatrixMode (GL_PROJECTION); glLoadIdentity(); gluPerspective(65.0,(GLfloat)iWidth/(GLfloat)iHeight, 0.1, 120.0); glMatrixMode(GL_MODELVIEW); glLoadIdentity(); } //添加绘图函数。这里绘制一个四面体,可以根据鼠标操作进行绕Y轴的旋转。 void DrawScene() { glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); // 清除屏幕和深度缓存 glLoadIdentity(); // 重置当前的模型观察矩阵 glTranslatef(0.0f,0.0f,-6.0f); // 左移1.5 单位,并移入屏幕6.0 glRotatef(rotY,0.0f,1.0f,0.0f); // 绕Y轴旋转金字塔 glBegin(GL_TRIANGLES); // 开始绘制金字塔的各个面 glColor3f(1.0f,0.0f,0.0f); // 红色 glVertex3f( 0.0f, 1.0f, 0.0f); // 三角形的上顶点(前侧面) glColor3f(0.0f,1.0f,0.0f); // 绿色 glVertex3f(-1.0f,-1.0f, 1.0f); // 三角形的左下顶点(前侧面) glColor3f(0.0f,0.0f,1.0f); // 蓝色 glVertex3f( 1.0f,-1.0f, 1.0f); // 三角形的右下顶点(前侧面) glColor3f(1.0f,0.0f,0.0f); // 红色 glVertex3f( 0.0f, 1.0f, 0.0f); // 三角形的上顶点(右侧面) glColor3f(0.0f,0.0f,1.0f); // 蓝色 glVertex3f( 1.0f,-1.0f, 1.0f); // 三角形的左下顶点(右侧面) glColor3f(0.0f,1.0f,0.0f); // 绿色 glVertex3f( 1.0f,-1.0f, -1.0f); // 三角形的右下顶点(右侧面) glColor3f(1.0f,0.0f,0.0f); // 红色 glVertex3f( 0.0f, 1.0f, 0.0f); // 三角形的上顶点(后侧面) glColor3f(0.0f,1.0f,0.0f); // 绿色 glVertex3f( 1.0f,-1.0f, -1.0f); // 三角形的左下顶点(后侧面) glColor3f(0.0f,0.0f,1.0f); // 蓝色 glVertex3f(-1.0f,-1.0f, -1.0f); // 三角形的右下顶点(后侧面) glColor3f(1.0f,0.0f,0.0f); // 红色 glVertex3f( 0.0f, 1.0f, 0.0f); // 三角形的上顶点(左侧面) glColor3f(0.0f,0.0f,1.0f); // 蓝色 glVertex3f(-1.0f,-1.0f,-1.0f); // 三角形的左下顶点(左侧面) glColor3f(0.0f,1.0f,0.0f); // 绿色 glVertex3f(-1.0f,-1.0f, 1.0f); // 三角形的右下顶点(左侧面) glEnd(); // 金字塔绘制结束 glutPostRedisplay(); glutSwapBuffers(); //交换缓冲区 } //加菜单定义函数,及菜单响应函数。这里的菜单是右键弹出式popup菜单,其中BuildPopupMenu建立菜单及菜单对应的ID号,菜单ID号的定义,置于main文件的上端。 enum MenuCommands { MENU_TEST = 0, MENU_EXIT }; void SelectFromMenu(int idCommand) { switch (idCommand) { case MENU_TEST: //写响应代码 MessageBox(NULL,"测试","",0); break; case MENU_EXIT: exit(0); break; } glutPostRedisplay();//干什么用的??????? } int BuildPopupMenu (void) { int menu; menu = glutCreateMenu(SelectFromMenu); glutAddMenuEntry ("测试\tt", MENU_TEST); glutAddMenuEntry ("Exit\tEsc", MENU_EXIT); return menu; } //添加鼠标响应函数。鼠标响应函数主要包括鼠标按下响应和移动响应,mousebutton鼠标按下响应,MouseMotion是鼠标移动响应。 void MouseButton(int button, int state, int x, int y) { if (button == GLUT_LEFT_BUTTON) { if (state == GLUT_DOWN) { mouseX = x; mouseY = y; mouseButtonDown = true; } else { mouseButtonDown = false; } } } void MouseMotion(int x, int y) { int deltX, deltY; // calculate mouse movement since click deltY = x - mouseX; deltX = y - mouseY; // store new mouse position mouseX = x; mouseY = y; if (mouseButtonDown) { // rotate rotX += deltX; rotY += deltY; glutPostRedisplay(); } } //键盘响应函数 void Keyboard(unsigned char key, int x, int y) { switch (key) { case 't': SelectFromMenu(MENU_TEST); break; case 27: // Esc SelectFromMenu(MENU_EXIT); break; } } int main(int argc, char **argv) { GLsizei iWidth = 640.0; //定义窗口大小 GLsizei iHeight = 480.0; glutInit(&argc, argv);//glut初始化 //指定函数glutCreateWindow()将创建的窗口模式,如是单缓存,还是双缓存,是RGB还是RGBA模式 //另外还可以指定与窗口有一个相关联的深度缓存,模板缓存 glutInitDisplayMode( GLUT_RGB | GLUT_DEPTH | GLUT_DOUBLE );//窗口显示模式,这里为RGB颜色模式,深度缓冲,双缓冲 glutInitWindowSize(iWidth, iHeight);//窗口大小 glutInitWindowPosition(100, 100);//窗口位置 glutCreateWindow( "控制台下的OpenGL入门学习" );//创建窗口 //处理窗口和输入事件 BuildPopupMenu();//创建右键弹出式菜单 glutAttachMenu(GLUT_RIGHT_BUTTON); glutMouseFunc(MouseButton);//鼠标按下,弹起的响应函数 glutMotionFunc(MouseMotion);//鼠标移动时的响应函数 glutKeyboardFunc(Keyboard);//键盘按下的响应函数 glutIdleFunc(Idle );//程序空闲时的处理函数为Idle() //初始化绘图环境,包括启用深度缓存,设置背景色,设置视口大小等 glClearColor(0.0f, 0.0f, 0.0f,0); // 设置背景色 glEnable(GL_DEPTH_TEST); //启用深度测试 glDepthFunc(GL_LEQUAL);//深度小或相等的时候也渲染 glutReshapeFunc(Resize );//窗口大小发生改变时的响应函数 glutDisplayFunc(DrawScene );//设置绘图函数为DrawScene() glutMainLoop(); //程序运行循环 return 0; }