一.环境准备:
这里使用的是win7, Visual Studio 2017。
OpenGL version : 3.0
二.OpenGL 扩展包下载
2.1 GLEW:windows开发环境,默认只支持opengl1.1的环境,但 OpenGL现在都发展到4.4了,要使用这些OpenGL的高级特性,就必须下载最新的扩展,另外,不同的显卡公司,也会发布一些只有自家显卡才支 持的扩展函数,你要想用这数涵数,不得不去寻找最新的glext.h,有了GLEW扩展库,你就再也不用为找不到函数的接口而烦恼,因为GLEW能自动识 别你的平台所支持的全部OpenGL高级扩展函数。也就是说,只要包含一个glew.h头文件,你就能使用gl,glu,glext,wgl,glx的全 部函数。GLEW支持目前流行的各种操作系统(including Windows, Linux, Mac OS X, FreeBSD, Irix, and Solaris)。
GLEW下载地址:http://glew.sourceforge.net/,目前最新版本2.1.0
GLEW下载完成后,bin下面有个glewinfo.exe,直接运行,会在同目录下市场一个txt文件,显示系统显卡支持的opengl版本和具体函数。
这里注意一下,在进入上述网址后选择最新的版本的下载,看清楚两种格式,Source 表示的是源代码,用于Cmake 编译生成的;另一种是Binary ,二进制文件直接可以使用的。所以选择Binary 。
2.2 freeglut
准备:下载并安装CMake-gui( https://cmake.org/download/ ),下载freeglut源代码(本文件以freeglut-3.0.0版本为例)
CMake能输出各种各样的Makefile或者project文件,具体的的作用以及linux下的命令行工具请自己查询百度,本文介绍windows下图形界面的操作方法。
2.2.1 解压freeglut源代码文件到freeglut-3.0.0目录,进入该目录建立build目录用以存放CMake生成的项目以及编译好的文件。
2.2.2 打开cmake-gui,“where is the source code” 填freeglut源代码目录的路径,“where to build binaries”填刚刚新建的build目录的路径。如:
2.2.3 点击configure,首次点击会弹出选择页面,选择编译工具和目标平台,例如:如果选择“Visual Studio 15 2017 Win64”,cmake会生成freeglut的项目,用vs2017编译这个项目最终产生的是64位的windows库文件(lib,dll)。同理如果选择“Visual Studio 15 2017”,最终编译将产生32位的windows库文件,“Visual Studio 15 2017 ARM”最终产生ARM平台下的库文件。
这里以编译产生32位库文件为目标,选择“Visual Studio 15 2017”,点击finish
2.2.4 点击finish后将首次配置,配置完成后有四个条目,每个条目下都有些选项供我们设置以满足各自的需求,比如FREEGLUT条目下的FREEGLUT_BUILD_DEMOS勾选的话,在之后用VS编译工程的时候会把例示程序也编译出来。
(1)更改CMAKE下的CMAKE_INSTALL_PREFIX,这一项是在vs编译好库文件之后将库文件安装的位置。例如:D:\opengl\x86这个目录。其余都采用默认的配置
配置好选项后再次点击configure,如果无报错显示” Configuring done”的话说明配置完成
2.2.5 点击Generate,cmake就会生成编译所需要的vs2013项目工程。到这里cmake的任务就结束了。
2.2.6 到刚刚的build目录下找到freeglut.sln项目文件用vs2013打开(最好用管理员身份运行vs然后打开这个项目)
2.2.7 在解决方案右键选择属性,把单启动项目设置为freeglut并点击应用。由于这里我们需要在其他程序中使用,所以选择了”Release”,另外,作者本人发现,如果选择”debug”模式,会出现setlocal 报错的问题–MSB3073。
在freeglut右键选择“生成”,编译就开始了。稍等一段时间编译完成。
2.2.8 在解决方案下找到INSTALL,右键选择生成,程序就会将编译好的库文件安装到在CMAKE中设置的CMAKE_INSTALL_PREFIX目录:
后续项目工程的配置想必大家都很熟悉了,这里不做过多赘述。
注意:1.“属性管理器->链接器->输入->附加依赖项”之中只包含freeglutd.lib(release版用freeglut.lib)就行了,不要把freeglut.lib与freeglut_static.lib文件同时加入附加依赖项!!!
2.头文件的包含要求与glut配置一样,要包含GL所在的目录,而不是“路径\GL”,不是“路径\GL” 不是“路径\GL”!!!