OpenGL初探-Win10+VS2017+freeglut+glew+gltools开发环境搭建

         最近在研究OpenGL,主要看的书是《OpenGL超级宝典(第5版)》,学习编程自然少不了从环境搭建开始,然后写一个Demo,运行成功即告开篇成功,本篇文章将使用书本中的2.5章节《第一个三角形》的Demo为例进行说明。

 一、准备

        学习OpenGL,那么需要事先下载几个库,因为他们是基础库,我们写的有关OpenGL程序都是基于这几个库的API,分别是reeglut、glew、gltools,缺一不可,我在学习的时候没用使用编译好的lib文件,而是下载的源代码,自己编译的lib文件。

    1.freeglut

         下载freeglut

         freeglut的全称是free OpenGL utility toolkit,其实他和opengl本身并没有什么关系,他的作用是方便程序员处理例如窗口,键盘事件,鼠标事件之类的东西。

         因为他是跨平台的,所以假如一个opengl程序是用glut开发的话,那在windows或者linux下是不需要进行任何的修改的。

         那为什么是freeglut而不是glut那?其实刚开始他就叫glut,不过老版本已经停止更新很久了,所以后来别人又建了个新的项目叫freeglut,API都是兼容的。

         我所使用的是最新版本:freeglut-3.2.1.tar.gz

   2.glew

         下载glew

         glew的全称是OpenGL Extension Wrangler Library,是对OpenGL API的封装,我所使用的版本是:glew-2.1.0.zip

   3.gltools

         下载gltools

         这个库很多文章上都写的googlecode,其实下载不了,github上可以下载,gltools是基于glew的,是对glew的再次封装.

   4.CMake

          下载CMake

          CMake可以用来将上面的源代码库生成VS2017工程,然后通过VS工程生成对应的库文件,如果大家下载的库文件是lib文件,那么可以不用下载CMake,我这里使用的是CMake的可执行文件:cmake-3.17.3-win64-x64.zip。

二、编译库文件

  1.编译freeglut

        这里简要讲一下用CMake来对freeglut如何生成VS2017工程,详细用法大家可以百度一下,很多教程。

        a.打开cmake-3.17.3-win64-x64\bin\cmake-gui.exe文件,会弹出一个CMake界面出来;

        b.将freeglut-3.2.1\CMakeLists.txt文件直接拖到CMake界面内;

        c.设置一下生成的工程文件目录,如下图:

           

        d.点击Config按钮, 选择VS版本,如果只安装了一个VS版本,那么CMake会自动帮你选好版本,然后点击"Finish"按钮即可,如下图:

           

        e.点击完Finish后,在窗口内会生成很多Key-Value,最主要的是最下面的Log输出,如果最后一行输出"Configuring done",即告配置成功;

           

        f.最后一步,点击"Generate"生成VS工程即可,在Log栏输出"Generating done",即告生成功,然后我们就可以在build目录下看到生成的VS工程啦;

           

        g.打开freeglut-3.2.1\build\freeglut.sln文件,编译生成目标文件即可, 生成成功之后,会产生动态库和静态库,分别在bin和lib文件夹下,我们这里主要使用静态库.

        h.经过以上步骤, freeglut就生成成功了, 文件先留着备用,后面会讲解如何配置和使用.

  2.编译glew

        glew的源码目录下生成了三份老版本VS的工程文件(VC6\VC10\VC12),如果大家使用的VS版本是VC6\VC10\VC12,那么可以直接使用即可。 

       如果没有对应的版本,那么有两种方法可以解决:

       a.强制使用新版本的VS打开VC12的工程,如果顺利的话也可以生成目标文件;

       b.按照生成freeglut的步骤使用CMake生成glew的VS2017工程文件。

  3.编译gltools

       这个是最后的重头戏,也是最麻烦的一个,因为gltools只提供了linux版本,不能使用CMake来对其生成VS2017的工程,所以我们需要手动给gltools建立一个VS2017的工程。

       我们首先为gltools建立一个静态库工程,如下图:

       选择好生成的目录,然后点击"确定"即可,接着GLTools的源代码拷贝到工程目录下,只拷贝.cpp文件即可(头文件是否拷贝无所谓, 因为在第三章节会作为公共的头文件进行配置), 然后右键点击GLTools工程,选择添加现有项,将.cpp文件添加到工程中.

       接着我们按照第三章节的前四步配置一下公共开发环境依赖库,配置完成后,再做如下的VS工程属性配置:

       1.删除生成的预编译头文件stdafx.h和stdafx.cpp,并且同时修改VS工程属性:

          右键GLTools工程->属性->配置属性->C/C++->预编译头->不使用预编译头

       2.设置包含目录

          右键GLTools工程->属性->配置属性->VC++目录->包含目录->添加"$(SolutionDir)\..\OpenGL\include"

          注意:GLTools工程根目录与OpenGL目录需保持一致, 如果不一致, 请自行根据自己实际情况修改配置;

       3.设置库目录

           右键GLTools工程->属性->配置属性->VC++目录->库目录->添加"$(SolutionDir)\..\OpenGL\lib\Debug"

           注意:debug和release版本的区别,不要配错了,需要对应上.

       4.设置与处理器

           右键GLTools工程->属性->配置属性->C/C++->预处理器->添加"_CRT_SECURE_NO_WARNINGS"

       以上配置完成后,即可编译生成静态库文件GLTools.lib.

三、配置公共依赖库环境

        为了便于后续OpenGL的需要,我们配置一个公共的开发环境依赖库,配置完成后我们后续新建的工程直接简单配置一下就可以使用上面我们生成的freeglut、glew和gltools了。

       1.新建一个目录“OpenGL”,然后再建一个子目录“GL”,如下图圈起来的部分:

          

      2.将glew的头文件都拷贝到OpenGL\include\GL目录下;

      3.将freeglut的头文件拷贝到OpenGL\include目录下;

      4.将gltools的头文件拷贝到OpenGL\include目录下;

      5.将glew、freeglut、gltools的lib库文件拷贝到OpenGL\lib目录下,注意区分debug和release版本;

      至此公共依赖库环境配置完成;

四、配置VS工程环境

       以书中《第一个三角形》例子为例,新建一个Windows控制台应用程序,工程取名"Triangle",然后我们来设置一下VS工程属性。

       1.删除预编译头文件pch.h和pch.cpp文件,并且同时修改VS工程属性:

          右键Triangle工程->属性->配置属性->C/C++->预编译头->不使用预编译头

       2.设置包含目录

          右键Triangle工程->属性->配置属性->VC++目录->包含目录->添加"$(SolutionDir)\..\OpenGL\include"

          注意:Triangle工程根目录与OpenGL目录需保持一致, 如果不一致, 请自行根据自己实际情况修改配置;

       3.设置库目录

           右键Triangle工程->属性->配置属性->VC++目录->库目录->添加"$(SolutionDir)\..\OpenGL\lib\Debug"

           注意:debug和release版本的区别,不要配错了,需要对应上.

       4.设置依赖项

          右键Triangle工程->属性->配置属性->链接器->输入->分别添加GLTools.lib、glew32sd.lib、freeglut_staticd.lib

       5.设置忽略特定默认库

          右键Triangle工程->属性->配置属性->链接器->忽略特定默认库->分别添加LIBCMT、MSVCRT

       6.修改GLBatch.h文件

          将"#ifdef WIN32"改成"#ifdef _WIN32", 新版本的VS需要用"_WIN32"

       7.将书中的代码敲到Triangle.cpp文件中, 网上也有人写好的, 直接拷贝过去也可以.

       8.编译运行,如果得到下面的结果,那么恭喜你正式进入OpenGL的世界.

        

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章