VS2010 OPENGL配置以及常出现的问题

来源:互联网 发布:linux c书籍 编辑:程序博客网 时间:2024/05/22 21:51

OpenGL的准备工作
现在Windows系统的主流编译环境有Visual Studio,Broland C++ Builder,Dev-C++等,它们都是支持OpenGL的。

安装流程比较简单:下载http://upload.programfan.com/upfile/200607311626279.zip

1、将下载的压缩包解开,将得到5个文件,分别是glut.h,glut.lib,glut32.lib,glut.dll,glut32.dll
2、将其中的glut.h放到C:\Program Files\Microsoft SDKs\Windows\v7.0A\Include\gl里面,VS2010会自动搜索这个路径。

3. 将glut.lib和glut32.lib复制到F:\vs2010\VC\lib下,根据VS2010的具体安装路径确定。

4. 将glut.dll和glut32.dll复制到C:\WINDOWS\system32下。


还有工程配置:熟悉windows编程的应该不是问题:


单击项目->属性->LINK->输入->附加依赖项按顺序

opengl32.lib glu32.lib glut.lib glaux.lib

常出现的问题:

1.win7下向system32复制dll的时候没有权限这时候要获取管理员权限,再将需要覆盖的dll文件找到

控制面板---管理中心---计算机管理---本地用户和组---用户---administrator右键---属性---把“账户已禁用”勾掉,确定。

获取管理员权限的方法:

开个记事本复制如下冒号以后的东西过去Windows Registry Editor Version 5.00  [HKEY_CLASSES_ROOT\*\shell\runas]@="管理员权限取得""NoWorkingDirectory"=""  [HKEY_CLASSES_ROOT\*\shell\runas\command]@="cmd.exe /c takeown /f \"%1\" && icacls \"%1\" /grant administrators:F""IsolatedCommand"="cmd.exe /c takeown /f \"%1\" && icacls \"%1\" /grant administrators:F"  [HKEY_CLASSES_ROOT\exefile\shell\runas2]@="管理员权限取得""NoWorkingDirectory"=""  [HKEY_CLASSES_ROOT\exefile\shell\runas2\command]@="cmd.exe /c takeown /f \"%1\" && icacls \"%1\" /grant administrators:F""IsolatedCommand"="cmd.exe /c takeown /f \"%1\" && icacls \"%1\" /grant administrators:F"  [HKEY_CLASSES_ROOT\Directory\shell\runas]@="管理员权限取得""NoWorkingDirectory"=""  [HKEY_CLASSES_ROOT\Directory\shell\runas\command]@="cmd.exe /c takeown /f \"%1\" /r /d y && icacls \"%1\" /grant administrators:F /t""IsolatedCommand"="cmd.exe /c takeown /f \"%1\" /r /d y && icacls \"%1\" /grant administrators:F /t"保存为.reg文件 即可双击它 再导入注册表

2.

当我们使用OpenGL使用库(glut)的时候,常常在链接会出现下面的错误:

无法解析的外部符号 ,该符号在函数 中被引用

此时,针对该问题,首先确保我们的代码中包含下面的部分:

#include <Windows.h>

#define GLUT_DISABLE_ATEXIT_HACK

#include "gl/glut.h"

其中切忌顺序问题,这个多数情况下都是这个宏定义在起作用



其他的问题:

可以查看http://blog.sina.com.cn/s/blog_7a00bf7501018mcj.html



最后留一个测试程序:

#include "stdafx.h"//#include <GL/GL.h>//#include <GL/GLU.h>#define GLUT_DISABLE_ATEXIT_HACK#include <GL/glut.h>void renderScene(void){glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);glLoadIdentity();glBegin(GL_TRIANGLES);glVertex3f(-0.5,-0.5,0.0);glVertex3f(0.5,0.0,0.0);glVertex3f(0.0,0.5,0.0);glEnd();glutSwapBuffers();}int _tmain(int argc, _TCHAR* argv[]){glutInit(&argc, (char**) argv);glutInitDisplayMode(GLUT_DEPTH | GLUT_DOUBLE | GLUT_RGBA);glutInitWindowPosition(100,100);glutInitWindowSize(320,320);glutCreateWindow("Hello OpenGL");glutDisplayFunc(renderScene);glutMainLoop();//enters the GLUT event processing loop.return 0;}

//能运行出三角形就算配置完成了

0 0
原创粉丝点击