前言:又是元气满满的一天呀,废话不多说,冲鸭!?。?/h3>
新建项目
-
打开VS
-
新建项目
-
选择Visual C++ 下的空项目,写入项目名称,以及要存储的位置,点击确定
将头文件夹和库文件夹指定到包含目录和库目录
-
点击右侧的解决方案资源管理器
-
右击项目,点击属性
-
选择VC++目录选项卡
-
此处的包含目录和库目录需要把自己的Include和Libs文件夹分别指定进去
-
点击右边的向下箭头,点击编辑
-
新建行
-
指定路径
-
找到自己创建的Include文件夹(这里可以添加多个路径,IDE会在这里寻找头文件,库文件同理),点击选择文件夹
-
确定
- 现在头文件已经在包含目录中了,库文件指定路径到库目录跟头文件指定到包含目录同理。这里不再复述
链接
打开VS
新建项目
选择Visual C++ 下的空项目,写入项目名称,以及要存储的位置,点击确定
点击右侧的解决方案资源管理器
右击项目,点击属性
选择VC++目录选项卡
此处的包含目录和库目录需要把自己的Include和Libs文件夹分别指定进去
点击右边的向下箭头,点击编辑
新建行
指定路径
找到自己创建的Include文件夹(这里可以添加多个路径,IDE会在这里寻找头文件,库文件同理),点击选择文件夹
确定
为什么要链接?
只有链接了你要使用的第三方库,才能够使用。项目中需要用到GLFW库,所以需要把GLFW库链接(Link)进工程
要链接一个库我们必须告诉链接器它的文件名
-
选择链接器的输入选项卡,点击附加依赖项右边的向下箭头,点击编辑
-
需要把在Libs文件下要要用的glfw3.lib这个库写入附加依赖项中
这样GLFW在编译的时候就会被链接进来了
- 除了GLFW库以外,还需要添加一个链接条目链接到OpenGL的库,但是这个库可能因为系统的不同而有一些差别
- 因为我使用的是windows平台,opengl32.lib已经包含在Microsoft SDK里了,它在Visual Studio安装的时候就默认安装了。由于用的是VS编译器,并且是在Windows操作系统上,我们只需将opengl32.lib添加进连接器设置里就行了。如果你是其他平台,请看原文详细内容:https://learnopengl-cn.github.io/01%20Getting%20started/02%20Creating%20a%20window/
-
添加完glfw3.lib和opengl32.lib后,点击确定
-
点击确定
此时GLFW库以及OPENGL库就链接完毕了
GLAD
为什么使用GLAD?
因为OpenGL只是一个标准/规范,具体的实现是由驱动开发商针对特定显卡实现的。由于OpenGL驱动版本众多,它大多数函数的位置都无法在编译时确定下来,需要在运行时查询。所以任务就落在了开发者身上,开发者需要在运行时获取函数地址并将其保存在一个函数指针中供以后使用。取得地址的方法因平台而异,在Windows上会是类似这样:
// 定义函数原型
typedef void (*GL_GENBUFFERS) (GLsizei, GLuint*);
// 找到正确的函数并赋值给函数指针
GL_GENBUFFERS glGenBuffers = (GL_GENBUFFERS)wglGetProcAddress("glGenBuffers");
// 现在函数可以被正常调用了
GLuint buffer;
glGenBuffers(1, &buffer);
你可以看到代码非常复杂,而且很繁琐,我们需要对每个可能使用的函数都要重复这个过程。幸运的是,有些库能简化此过程,其中GLAD是目前最新,也是最流行的库。
配置GLAD
打开在线服务
GLAD使用了一个在线服务。在这里我们能够告诉GLAD需要定义的OpenGL版本,并且根据这个版本加载所有相关的OpenGL函数。-
语言选为C/C++,OpenGL,API选gl的大于等于3.3的版本,这里我们用的是3.3,模式选择Core,勾选Generate a loader,点击GENERATE
-
下载glad.zip压缩包
-
解压压缩包
-
将两个头文件目录(glad和KHR)复制到你的Include文件夹中
-
右击项目,选择添加>>现有项
-
找到你解压glad压缩包的位置,添加glad.c文件到你的工程中
测试GLAD库和GLFW库是否链接成功
-
右键项目,选择添加>>新建项
-
选择C++文件,更改名称为main,点击添加
- 将以下的指令加到你的文件顶部:
#include <glad/glad.h>
#include <GLFW/glfw3.h>
注意:请确认是在包含GLFW的头文件之前包含了GLAD的头文件。GLAD的头文件包含了正确的OpenGL头文件(例如GL/gl.h),所以需要在其它依赖于OpenGL的头文件之前包含GLAD。
-
点击编译按钮
-
如果没有给你提示任何的错误,恭喜你成功了!