OpenGL使用VS2017和CMake配置GLFW和GLAD

简单的介绍

OpenGL

OpenGL(Open Graphics Library,开放图形库),一般被认为是一个API(Application Programming Interface,应用程序编程接口),包含了一系列可以操作图形、图像的函数。其实,OpenGL本身并不是一个API,它仅仅是一个由Khronos组织制定并维护的规范(Specification)。OpenGL规范严格规定了每个函数该如何执行,以及它们的输出值。至于内部具体每个函数是如何实现(Implement)的,将由OpenGL库的开发者自行决定。

GLFW

在我们使用OpenGL进行绘制图形之前,首先要做的就是创建一个OpenGL上下文(Context)和一个用于显示的窗口。然而,这些操作在每个系统上都是不一样的,OpenGL有目的地从这些操作抽象(Abstract)出去。这意味着我们不得不自己处理创建窗口,定义OpenGL上下文以及处理用户输入。

GLFW是一个专门针对OpenGL的C语言库,它提供了一些渲染物体所需的最低限度的接口。它允许用户创建OpenGL上下文,定义窗口参数以及处理用户输入。这也就节省了我们书写操作系统相关代码的时间,提供给我们一个窗口和上下文用来渲染。

官方网址:https://www.glfw.org/

GLAD

因为OpenGL只是一个标准/规范,具体的实现是由驱动开发商针对特定显卡实现的。由于OpenGL驱动版本众多,它大多数函数的位置都无法在编译时确定下来,需要在运行时查询。所以任务就落在了开发者身上,开发者需要在运行时获取函数地址并将其保存在一个函数指针中供以后使用。取得地址的方法因平台而异,所以非常繁琐。幸运的是,有些库能简化此过程,其中GLAD是目前最新,也是最流行的库,它是一个开源库,可以在其提供的在线服务中配置。

CMake

CMake是一个工程文件生成工具。用户可以使用预定义好的CMake脚本,根据自己的选择生成不同IDE的工程文件。这也就允许我们从GLFW源码里创建一个Visual Studio 2017工程文件,之后进行编译。

官方网址:https://cmake.org/

在Windows下使用VS2017的配置过程

注:为了给大家提供方便,我已经将前几步整合好的Packages包打包,需要的话可以直接下载:

下载链接:https://pan.baidu.com/s/1iwJhRHecTnn6GtVYSewrQg 提取码:s733

如果你已拥有了这个包,可以直接跳到“创建一个工程并将Packages的内容引入”一节,如果你想亲手经理一边整个配置过程,就可以继续从头阅读下去。

下载GLFW库

下载页面:https://www.glfw.org/download.html

在下载页面,我们下载其源码,然后使用CMake自己进行编译,以获得Visual Studio 2017可用的工程文件。

下载GLFW

下载后解压得到的文件如下:

GLFW解压文件

下载CMake

下载页面:https://cmake.org/download/

这里下载的是3.13.3版本的Windows64位安装包:

下载CMake

使用CMake和VS2017生成解决方案

下载完成后正常安装,并且打开已经安装成功的CMake。这里我们可以选择用GUI打开或者通过Command Line使用,为了简单直观,使用GUI来运行CMake。

将源代码一栏定位到刚刚下载好的GLFW源码文件夹下,然后选择一个生成的目标文件夹,之后点击下方的“Configure”进行设置。

使用CMake生成VS2017工程文件

默认其选项即可:

使用CMake生成VS2017工程文件

然后依次点击Configure、Generate:

使用CMake生成VS2017工程文件
使用CMake生成VS2017工程文件

看到最后输出成功即可。

使用CMake生成VS2017工程文件

此时可以在刚刚设置的目标文件夹下找到已经生成的.sln文件,双击使用Visual Studio 2017打开该解决方案,即可直接进行编译。

找到生成的.sln文件
使用Visual Studio 2017生成解决方案
使用Visual Studio 2017生成解决方案

编译成功后,可以在刚刚目录的build\src\Debug\目录下找到编译后的文件:

找到编译后的文件

下载GLAD库

GLAD提供了一个在线服务地址,用来配置和生成GLAD库。

在线服务网址:https://glad.dav1d.de/

可以按照如下的内容配置,在GL的版本上,只要选择一个3.3以上的版本即可,这里选择的最新版本4.6,Profile处要选择Core模式。

GLAD的在线配置

生成好后直接下载对应的压缩包即可。

下载GLAD包

解压后得到如下文件:

解压GLAD包得到的文件

将所需的文件打包

为了方便,这一步我们将所有OpenGL用到的依赖包打包在一个文件夹下,这样这一个文件夹就包含了所有所需的外部依赖。当然你也可以跳过这一步,但是接下来你的每一个新工程的引入都还需要在所有地点将各个包引入。

新建一个文件夹,这里将其命名为Packages。

分别找到GLFW源码中include\文件夹下的GLFW文件夹、下载的GLAD库放到一个新建的Packages\include\文件夹下:

创建Packages依赖包
创建Packages依赖包

将GLFW编译后的.lib库文件放在新建的Packages\lib\文件夹下:

创建Packages依赖包

将下载的GLAD库中的src文件夹中的文件放入Packages\src\文件夹下(你也可以直接将glad下的src文件夹放置在Packages文件夹下):

创建Packages依赖包

最后得到的这个Packages即是我们整合好的包,这个包的最终结构大概如下面这个样子,接下来只需要将这个包进行引入即可。

Packages依赖包的结构

注:为了给大家提供方便,我已经将整合好的Packages包打包,需要的话可以直接下载:https://pan.baidu.com/s/1iwJhRHecTnn6GtVYSewrQg 提取码:s733

创建一个工程并将Packages的内容引入

这里使用Visual Studio 2017,创建一个C++的空项目。

创建一个C++空项目

接下来配置是为了是我们的GLFW库和GLAD库在我们新建的项目中起作用。在项目处右键,选择属性,先切换到“VC++目录”下:

引入GLFW库和GLAD库

先引入“包含目录”:

引入GLFW库和GLAD库
引入GLFW库和GLAD库

再引入“库目录”包:

引入GLFW库和GLAD库
引入GLFW库和GLAD库

最后转到“链接器”的“输入”选项,添加附加依赖项:opengl32.libglfw3.lib,这个地方直接输入即可:

引入GLFW库和GLAD库
引入GLFW库和GLAD库

最后在项目的“源文件”中添加Packages包中的src\glad.c:

引入GLFW库和GLAD库

找到Packages\src\glad.c,将其加入即可:

引入GLFW库和GLAD库

验证配置是否成功

以上,一切准备工作都做好了!如果你想检测一下配置的结果是否可用,可以新建一个main.cpp文件,然后在头文件处加入:

    #include <glad/glad.h>
    #include <GLFW/glfw3.h>

如果没有报错,很大程度上讲应该是成功了!


转载请注明出处,本文永久更新链接:
https://blogs.littlegenius.xin/2019/01/24/OpenGL学习笔记(一)使用VS2017和CMake配置GLFW和GLAD/

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 214,588评论 6 496
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,456评论 3 389
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 160,146评论 0 350
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,387评论 1 288
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,481评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,510评论 1 293
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,522评论 3 414
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,296评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,745评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,039评论 2 330
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,202评论 1 343
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,901评论 5 338
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,538评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,165评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,415评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,081评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,085评论 2 352

推荐阅读更多精彩内容