现在的位置: 首页 > 综合 > 正文

计算机中丢失glut32.dll

2013年08月26日 ⁄ 综合 ⁄ 共 3971字 ⁄ 字号 评论关闭

好不容易一个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;
}



抱歉!评论已关闭.