因作者的毕业设计会用到OpenGL的很多内容,所以需要重温一下OpenGL编程。刚看了4章的蓝色圣经,一路跌跌碰碰,偶然发现了这个文章,作者觉得就像辛劳的旅客发现绿洲一样,所以拿来和大家分享一下。
原文章链接:http://blog.csdn.net/sunny_unix/article/details/8056807
OpenGL超级宝典(第五版)环境配置
Vs2008+winXP 后续会整理Ubuntu 12.04LTS下的配置作者:sunny_unix
1.各种库的配置
(1)glew
下载:https://sourceforge.net/projects/glew/files/glew/1.7.0/glew-1.7.0.zip/download
将include文件夹下的.h文件拷贝到C:\Program Files\Microsoft Visual Studio 9.0\VC\include\GL目录中(没有GL目录就自己创建一个,这里的具体路径视电脑上VS2008安装的位置而定)
将lib文件夹下的.lib文件拷贝到C:\Program Files\Microsoft Visual Studio 9.0\VC\lib目录中
将bin文件夹下的.dll文件拷贝到C:\Windows\System32目录中
(2)glut
下载OpenGL的glut类库:http://www.opengl.org/resources/libraries/glut/glutdlls37beta.zip
将.h文件拷贝到C:\Program Files\Microsoft Visual Studio 9.0\VC\include\GL目录中(没有GL目录就自己创建一个,这里的具体路径视电脑上VS2008安装的位置而定)
将.lib文件拷贝到C:\Program Files\Microsoft Visual Studio 9.0\VC\lib目录中
将.dll文件拷贝到C:\Windows\System32目录中
环境变量配置好后不必每个新建项目都按照下面这样配置。下面步骤仅限没有进行上述配置的用户。
2.配置项目环境
在需要用到openGL的每个项目中都需要执行以下步骤:
(1)项目——项目属性——配置属性——C/C++— —预处理器——预处理器定义,添加
GLUT_BUILDING_LIB
(2)项目——项目属性——配置属性——链接器——输入——附加依赖项,添加
glut32.lib Opengl32.lib Glu32.lib glew32.lib
3.应用举例
(1)先创建一个Win32控制台应用程序项目(文件——新建——项目——win32——win32控制台应用程序),在下面的名称处任意命名,假定是helloworld,然后点确定。之后点下一步,然后在附加选项的空项目之前打勾,之后点完成。
(2)配置项目属性:如上面所述2所述
(3)在解决方案管理器的源文件文件夹上点右键,添加——新建项——c++文件,任意命名,假定是Hello。
在导航窗格中的源文件分类下的Hello.cpp中输入如下代码:
[cpp]view plaincopyprint?
1. #include <windows.h> //这个必不可少
2. #include <gl/glut.h>
3. void display()
4. {
5. glClear(GL_COLOR_BUFFER_BIT);
6. glColor3f(1.0,1.0,1.0);
7. glBegin(GL_POLYGON);
8. glVertex3f(0.25,0.25,0.0);
9. glVertex3f(0.75,0.25,0.0);
10. glVertex3f(0.75,0.75,0.0);
11. glVertex3f(0.25,0.75,0.0);
12. glEnd();
13. glFlush();
14.}
15.void init()
16.{
17. glClearColor(0.0,0.0,0.0,0.0); //以黑色清屏
18. glMatrixMode(GL_PROJECTION); //glMatrixMode - 指定哪一个矩阵是当前矩阵
19. //GL_PROJECTION,对投影矩阵应用随后的矩阵操作
20. glLoadIdentity(); //该函数的功能是重置当前指定的矩阵为单位矩阵
21. glOrtho(0.0,1.0,0.0,1.0,-1.0,1.0);
22.}
23.int main(int argc,char** argv)
24.
25.{
26. glutInit(&argc,argv);
27. glutInitDisplayMode(GLUT_SINGLE|GLUT_RGB);
28. glutInitWindowSize(250,250);
29. glutInitWindowPosition(100,100);
30. glutCreateWindow("Hello OpenGL");
31. init();
32. glutDisplayFunc(display);
33. glutMainLoop();
34. return 0;
35.}
运行结果是个矩形,成功!
4.OpenGL超级宝典第五版的实例代码运行方法:
条件:下载--SB-WinSrc.rar和SB5.rar
SB-WinSrc.rar 解压后将share文件夹放在代码的../../下面(代码中的GLTools.h位置)后将SB5.rar解压后用已经配置好OpenGL的VS2008(上述配置过的那步)打开SB5\freeglut-2.6.0\VisualStudio2008Static下编译出freeglut_static.lib考到
C:\Program Files\Microsoft Visual Studio 9.0\VC\lib下后就能运行实例代码了
5.OpenGL超级宝典第五版的教学代码运行方法:
条件:SB5.rar
SB5.rar解压后将SB5\Src\GLTools\include的头文件考到C:\Program Files\Microsoft Visual Studio 9.0\VC\include中。
将SB5\VisualStudio2008\GLTools\Release中的gltools.lib考到C:\Program Files\Microsoft Visual Studio 9.0\VC\lib中
运行时遇到错误的看下面:
1. 将C:\Program Files\Microsoft Visual Studio 9.0\VC\include\glut.h复制到
C:\Program Files\Microsoft Visual Studio 9.0\VC\include\GL中
2. 静态库动态库编译时都选---项目-----属性----配置属性---C/C++----代码生成----运行时库都用和生成gltools.lib一样的-------多线程/MT
3. 因为生成gltools.lib需要glew库而第五版用的是OpenGL3.3所以glew要用1.9的版本而且要用生成gltools.lib的头文件(在src目录里面)的glew.h glxew.h wglew.h 覆盖原来的才行。
4. 现在打开示例代码后选---属性----配置属性---C/C++----代码生成----运行时库—MT后试试能不能运行,如果能运行那接着向下进行,如果失败那先停在这看看前面自己仔细在检查一遍解决完在向下进行。
5. 打开gltools项目将项目-----属性----配置属性---C/C++----代码生成----运行时库—多线程调试/MDT后再次编译一个MDT版本的库后一次将freeglut_static.lib和freeglut.lib一样也编译后覆盖原来的。
6. 再次打开刚才那个实例项目将项目-----属性----配置属性---C/C++----代码生成----运行时库—多线程调试/MDT后运行是否通过,通过就说明成功,忘了说一下运行前别忘了先清理一下项目!!。
关于后面的OpenEXR:
1)下载相关组件
在C盘下建立一个目录libs-x86,从OpenEXR官网http://www.openexr.com/downloads.html下载最新稳定版本:
IlmBase 1.02 source code release
OpenEXR 1.7.0 source code release
从网站http://www.winimage.com/zLibDll/index.html 下载zlib-1.2.5的源文件(用到其中的zlib.h和zconf.h)和dll文件:
zlib125.zip
zlib125dll.zip
这里需要说明的是,OpenEXR1.7.0用到的zlib版本为zlib-1.2.5,下载更新的版本会引起错误。
2)将下载文件解压到目录C:/libs-x86下
打开c:/libx-x86/ilmbase-1.0.2/vc/vc8/IlmBase/IlmBase.sln,选择Tools->VisualStudio Command Prompt,在打开的DOS界面输入:
cd c:\libs-x86\ilmbase-1.0.2\Half
cl eLut.cpp
cl toFloat.cpp
eLut > eLut.h
toFloat > toFloat.h
生成相应的文件。
3)选择Debug配置,编译解决方案
4)选择Release配置,编译解决方案
5)此时在C盘下创建了一个目录C:\Deploy,目录下有lib,include,bin三个子目录。
6)复制zlib.h和zconf.h从目录c:\libs-x86\zlib125到目录c:\Deploy\include
复制zdllwapi.lib和zlibwapi.exp从c:\libs-x86\zlib125dll\dll32到C:\Deploy\lib\Win32\Debug
复制zdllwapi.lib和zlibwapi.exp从c:\libs-x86\zlib125dll\dll32到C:\Deploy\lib\Win32\Release
复制zdllwapi.dll从c:\libs-x86\zlib125dll\dll32到C:\Deploy\bin\Win32\Debug
复制zdllwapi.dll从c:\libs-x86\zlib125dll\dll32到C:\Deploy\bin\Win32\Release
在VS2010中打开C:\libs-x86\openexr-1.7.0\vc\vc8\OpenEXR\OpenEXR.sln
选择Debug配置,选择ProjectIlmImf,右键ProjectOnly->Build OnlyIlmImf,然后再Build整个解决方案。
选择Release配置,选择ProjectIlmImf,右键ProjectOnly->Build OnlyIlmImf,然后再Build整个解决方案。
遇到问题及解决方案:
1)在Debug模式下,LINK : fatal error LNK1104: cannot open file'..\Win32\Debug\IlmImf.map'
解决方法:IlmImf右键->Properties->Linker->General->EnableIncremental Linking,设置为No。
之后考到相关目录就行了,还有后面代码可能除了有问题还有就是你的电脑支持的opengl版本,太低的程序也不能运行!!!