OpenGL学习笔记之三OpenGL开发环境之GLFW与GLAD配置内容来源:
前⾔
在我们画出出⾊的效果之前,⾸先要做的就是创建⼀个OpenGL上下⽂(Context)和⼀个⽤于显⽰的窗⼝。然⽽,这些操作在每个系统上都是不⼀样的,OpenGL有⽬的地从这些操作抽象(Abstract)出去。这意味着我们不得不⾃⼰处理创建窗⼝,定义OpenGL上下⽂以及处理⽤户输⼊。幸运的是,有⼀些库已经提供了我们所需的功能,其中⼀部分是特别针对OpenGL的。这些库节省了我们书写操作系统相关代码的时间,提供给我们⼀个窗⼝和上下⽂⽤来渲染。最流⾏的⼏个库有GLUT,SDL,SFML和GLFW。
以下内容是对GLFW介绍,以及Windows 10专业版,IDE为VS2017上开发环境的搭建。
GLFW
GLFW是⼀个专门针对OpenGL的C语⾔库,它提供了⼀些渲染物体所需的最低限度的接⼝。它允许⽤户创建OpenGL上下⽂,定义窗⼝参数以及处理⽤户输⼊,这正是我们需要的。其⽤来代替之前的GLUT库。本节和下⼀节的⽬标是建⽴GLFW环境,并保证它恰当地创建OpenGL上下⽂并显⽰窗⼝。这篇教程会⼀步步从获取、编译、链接GLFW库讲起。我们使⽤的是Microsoft Visual Studio 2017 IDE(操作过程在新版的Visual Studio都是相同的)。如果你⽤的不是Visual Studio(或者⽤的是它的旧版本)请不要担⼼,⼤多数IDE上的操作都是类似的。
构建GLFW
GLFW可以从它官⽅⽹站的上获取。GLFW已经有针对Visual Studio 2013/2015的预编译的⼆进制版本和相应的头⽂件,但是为了完整性我们将从编译源代码开始。所以我们需要下载源代码包,点击下图中的Source package按钮下载源码包。
如果你要使⽤预编译的⼆进制版本的话,请下载32位的版本⽽不是64位的(除⾮你清楚你在做什么)。很多⼈反映64位版本会出现很多奇怪的问题。
下载源码包之后,将其解压并打开。从源代码编译库可以保证⽣成的库是兼容你的操作系统和CPU的,⽽预编译的⼆进制⽂件可能会出现兼容问题(甚⾄有时候没提供⽀持你系统的⽂件)。提供源代码所产⽣的⼀个问题在于不是每个⼈都⽤相同的IDE开发程序,因⽽提供的⼯程/解决⽅案⽂件可能和⼀些⼈的IDE不兼容。所以⼈们只能从.c/.cpp和.h/.hpp⽂件来⾃⼰建⽴⼯程/解决⽅案,这是⼀项枯燥的⼯作。但因此也诞⽣了⼀个叫做CMake的⼯具。
CMake
CMake是⼀个⼯程⽂件⽣成⼯具。⽤户可以使⽤预定义好的CMake脚本,根据⾃⼰的选择(像是Visual Studio, Code::Blocks, Eclipse)⽣成不同IDE的⼯程⽂件。这允许我们从GLFW源码⾥创建⼀个Visual Studio 2017⼯程⽂件,之后进⾏编译。⾸先,我们需要从下载安装CMake。当CMake安装成功后,你可以选择从命令⾏或者GUI启动CMake,由于我不想让事情变得太过复杂,我们选择⽤GUI。CMake需要⼀个源代码⽬录和⼀个存放编译结果的⽬标⽂件⽬录。源代码⽬录我们选择GLFW的源代码的根⽬录,然后我们新建⼀个build⽂件夹,选中作为⽬标⽬录。
在设置完源代码⽬录和⽬标⽬录之后,点击Configure(设置)按钮,让CMake读取设置和源代码。我们接下来需要选择⼯程的⽣成器,由于我们使⽤的是Visual Studio 2017,我们选择 Visual Studio 15 2017
选项(建议不要选择 Visual Studio 15 2017 Win64,本⼈的系统配置如下图所⽰,最终调⽤GLFW函数时会出现链接错误,出现⽆法解析的符号)。CMake会显⽰可选的编译选项⽤来配置最终⽣成的库。这⾥我们使⽤默认设置,并再次点击Configure(设置)按钮保存设置。保存之后,点击Generate(⽣成)按钮,⽣成的⼯程⽂件会在你的build⽂件夹中。
编译
在build⽂件夹⾥可以到GLFW.sln⽂件,⽤Visual Studio 2017打开。因为CMake已经配置好了项⽬(整个解决⽅案中有30个项⽬,我们需要的是其中的⼀个glfw,其⽤于⽣成glfw3.lib⽂件),所以在glfw项⽬上右键⽣成,将编译⽣成库glfw3.lib(注意我们⽤的是第3版)就会出现在src/Debug⽂件夹内。
库⽣成完毕之后,我们需要让IDE知道库和头⽂件的位置。有两种⽅法:
1. 到IDE或者编译器的/lib和/include⽂件夹,添加GLFW的include⽂件夹⾥的⽂件到IDE的/include⽂件夹⾥去。⽤类似的⽅法,将glfw3.lib添加
为什么现在都用cmake到/lib⽂件夹⾥去。虽然这样能⼯作,但这不是推荐的⽅式,因为这样会让你很难去管理库和include⽂件,⽽且重新安装IDE或编译器可能会导致这些⽂件丢失。
2. 推荐的⽅式是建⽴⼀个新的⽬录包含所有的第三⽅库⽂件和头⽂件,并且在你的IDE或编译器中指定这些⽂件夹。我个⼈会使⽤⼀个单独的⽂件
夹,⾥⾯包含Libs和Include⽂件夹,在这⾥存放OpenGL⼯程⽤到的所有第三⽅库和头⽂件。这样我的所有第三⽅库都在同⼀个位置(并且可以共享⾄多台电脑)。然⽽这要求你每次新建⼀个⼯程时都需要告诉IDE/编译器在哪能到这些⽬录。以下是本⼈机器上的⽬录
完成上⾯步骤后,我们就可以使⽤GLFW创建我们的第⼀个OpenGL⼯程了!
我们的第⼀个⼯程
⾸先,打开Visual Studio,创建⼀个新的项⽬。如果VS提供了多个选项,选择Visual C++,然后选择E
mpty Project(空项⽬)(别忘了给你的项⽬起⼀个合适的名字)。现在我们终于有⼀个空的⼯作空间了,开始创建我们第⼀个OpenGL程序吧!
链接
为了使我们的程序使⽤GLFW,我们需要把GLFW库链接(Link)进⼯程。这可以通过在链接器的设置⾥指定我们要使⽤glfw3.lib来完成,但是由于我们将第三⽅库放在另外的⽬录中,我们的⼯程还不知道在哪寻这个⽂件。于是我们⾸先需要将我们放第三⽅库的⽬录添加进设置。要添加这些⽬录(需要VS搜索库和include⽂件的地⽅),我们⾸先进⼊Project Properties(⼯程属性,在解决⽅案窗⼝⾥右键项⽬),然后选
择VC++ Directories(VC++ ⽬录)选项卡(如下图)。在下⾯的两栏添加⽬录(包含⽬录以及库⽬录):
出现类似下⾯这幅图的界⾯,图是选择Include Directories(包含⽬录)时的界⾯:
这⾥可以添加任意多个⽬录,IDE会从这些⽬录⾥寻头⽂件。所以只要你将GLFW的Include⽂件夹加进路径中,你就可以使
⽤<GLFW/..>来引⽤头⽂件。库⽂件夹也是⼀样的。
现在VS可以到所需的所有⽂件了。最后需要在Linker(链接器)选项卡⾥的Input(输⼊)选项卡⾥添加glfw3.lib这个⽂件:
要链接⼀个库我们必须告诉链接器它的⽂件名。库名字是glfw3.lib,我们把它加到Additional Dependencies(附加依赖项)字段中(⼿动或者使⽤选项都可以)。这样GLFW在编译的时候就会被链接进来了。除了GLFW之外,你还需要添加⼀个链接条⽬链接到OpenGL的库,但是这个库可能因为系统的不同⽽有⼀些差别。
Windows上的OpenGL库
如果你是Windows平台,opengl32.lib已经包含在Microsoft SDK⾥了,它在Visual Studio安装的时候就默认安装了。由于这篇教程⽤的是VS编译器,并且是在Windows操作系统上,我们只需将opengl32.lib添加进连接器设置⾥就⾏了。
Linux上的OpenGL库
在Linux下你需要链接libGL.so库⽂件,这需要添加-lGL到你的链接器设置中。如果不到这个库你可能需要安装Mesa,NVidia或AMD的开发包,这部分因平台⽽异(⽽且我也不熟悉Linux)就不仔细讲解了。
接下来,如果你已经添加GLFW和OpenGL库到连接器设置中,你可以⽤如下⽅式添加GLFW头⽂件:
#include <GLFW\glfw3.h>

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。