一直想写一篇详细的OpenGL蓝宝书的环境配置,研究了很久!看了很多网上的教程,发现很多都没讲清楚,或者说只适合特定情况下。下面开始详细的步骤。这个方法是查阅了很多方法与资料,完全按照自己理解来写的!难免会存在很多不足,如果对文章的内容有所疑惑或者建议,还请评判指正(联系QQ:2451901128)
作者:FJW
转载请注明出处
一、OpenGL蓝宝书需要安装的库
freeglut库:这个库是GLUT的代替库,GLUT库是是OpenGL的实用工具库它包含了创建窗口和GUI的功能。但是这个库已经停止维护,取而代之的是freeglut库。值得注意的是freeglut库包含了所有GLUT库的功能,因此在很多教程中都安装了GLUT库是错误的。
GLEW库:这个库是一个扩展库,windows下OpenGL只更新到了1.1版本,但是现在OpenGL都更新到了4.5,那么需要使用更高级的特性就需要使用GLEW来获取函数接口。
GLTools库:这个库是蓝宝书作者自己建立的一个库,目的仅仅只是为了让学习这本书的人不再关注于写代码。值得注意的是这个库封装了GLEW库(因此我们只需要把GLTools库安装好,就可以使用GLEW库。)
二、两种库链接
在进行编译freeglut和GLtools库之前就不得不先说说怎么链接库。链接库的方式有两种:静态链接,动态链接。
静态链接库:文件后缀.lib,lib文件包含了库里面所有的函数的源码并以二进制形式给出,在项目进行编译时,编译器会解析lib文件并将目标函数的二进制代码插入到调用出。如果库中没有这个函数或者找不到这个函数就会出现未解析的错误。
动态链接库:文件后缀名.dll(还有其他的后缀),dll文件和lib文件一样包含了库函数源码的二进制码。但是动态链接和静态链接最大的区别是,动态链接不会将函数的代码拷贝到执行文件去。(详细区别请看专业的书)。dll文件还会有一个导出库,包含dll文件的函数位置等信息(文件后缀也为.lib)。
二、使用CMake
1、解压文件,安装并打开CMake
2、使用CMake创建项目
该界面上Where is the source code 为源代码的文件夹(请注意该文件夹下必须包含CMakeLists的文本文件,这个是CMake的执行代码,有兴趣的可以去学习)。Where to build the binaries 这个是生成项目的文件路径(随便创一个就行了)。Configure 这个是选择的编译环境,Generate这个是正式创建项目。选择好源文件路径和创建路径后,点击Configure选择编译环境(默认就行了,必须选择你电脑安装的visual studio对应版本)。
三、freeglut库
下载freeglut3.0.0
https://sourceforge.net/projects/freeglut/files/
1、设置好CMake
出现Configuring done表示编译环境设置好,中间出现的一些选FREEGLUT_BUILD_SHARED_LIBS和FREEGLUT_BUILD_STATIC_LIBS分别表示编译成动态库还是静态库(其它的不知道什么意思可以选可以不选)。
2、编译freeglut库
直接点击下面的Opne Project或者手动打开上一步创建的文件夹找到.sln进入Visual studio界面,点击生成解决方案就可以生成静态库或动态库。3、链接freeglut库
(1)复制freeglut_staticd.lib到C:\Program Files (x86)\Microsoft VisualStudio\2017\Community\VC\Tools\MSVC\14.15.26726\lib\x86。
(2)把freeglut3.0.0源文件夹下的include\GL里面的四个头文件复制到C:\Program Files (x86)\Microsoft Visual
Studio\2017\Community\VC\Tools\MSVC\14.15.26726\include\GL文件夹下(若没有GL创建GL文件夹)
4、使用freeglut库
在vs中的项目属性-链接器-附加依赖项,添加.lib文件的名称freeglut_staticd.lib就新了(这是静态库的链接,动态库配置GLEW时会讲到)(文件头,.lib为什么放在上述所说的路径下,是因为VS默认寻找的路径是这个,当然还有其他的路径。如果你想更改路径在VS项目属性下的VC++目录下可以修改,详细请参照其他的资料)
四、GLEW库
GLEW这个库比较特殊,因为gltools库中封装了glew因此我认为有两种方法安装glew和gltools。先说第一种
1、设置好CMake
2、编译glew
直接点击下面的Opne Project或者手动打开上一步创建的文件夹找到.sln进入Visual studio界面,点击生成解决方案就可以生成静态库或动态库。
3、链接glew
GLEW有一个静态链接库和一个动态链接库,所以它有两个lib文件一个dll文件(glew32d.lib和glew32d.dll,libglew32d.lib)。和freeglut不同的是这两个必须都链接上。静态库libglew2d.lib按照freeglut的方法链接,这里不再赘述。现在关键讲讲动态链接库。
(1)glew2d.lib放到和静态链接库相同的目录下
(2)glew32d.dll放到C:\Windows\SysWOW64目录下(vs2017版本只能放到这这个路径下,放到vs安装目录的bin下是无效的,但是vs2017以下的版本应该可以放到bin目录下)
4、使用glew
和freeglut一样在项目的附加依赖性添加好lib就行了
五、gltools库
编译gltools不使用CMake,使用VS自己创建编译,编译前必须将glew安装好
1、创建项目
在visual studio2017下新建项目(在vs2017下创建项目选项与之前版本相差很大,在VS2017以下的版本只要选择win32控制台应用程序应该就可以了)点击Visual C++下的windows桌面,选择Windows桌面向导,改名字为gltools,确定。再在弹出的窗口点击静态库,取消预编译头,确定。项目创建好了。
2、编译项目
点击项目,右键选择添加已有项目,GLTools的头文件和源文件添加进去除去(glew.c)。将GLTools的11个头文件(GLBatch.h,GLBatchBase.h,GLFrame.h等)复制到C:\Program Files(x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.15.26726\include。其次在项目属性下的C/C++下,点击预处理器-预处理定义添加_CRT_SECURE_NO_WARNINGS,确定。点击生成解决方案就可以得到gltools.lib。
3、链接
gltools为静态链接,连接方式跟freeglut一样
4、使用
使用方式也一样
六、第二种编译gltools方式
因为gltools可以封装glew因此可以不单独安装glew,仅仅安装gltools。
(1)首先将GLTools引用的三个GLEW的头文件复制到上述VS查找头文件的绝对路径下去,也就是C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.15.26726\include\GL,并将GLTools的11个头文件(GLBatch.h,GLBatchBase.h,GLFrame.h等)复制到C:\Program Files(x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.15.26726\include。
(2)然后创建项目添加源文件和头文件但是包括(glew.c),剩下的按照第一种方法操作就行了
总结:
第一种和第二种安装gltools的方法主要区别在于编译库是是否包括glew.c,其实在于是将glew库和gltools一起安装还是分开安装,方法是一样的。