一、为什么用GLAD
由于OpenGL驱动版本众多,它大多数函数的位置都无法在编译时确定下来,需要在运行时查询。所以任务就落在了开发者身上,开发者需要在运行时获取函数地址并将其保存在一个函数指针中供以后使用。取得地址的方法因平台而异,在Windows上会是类似这样:
你可以看到代码非常复杂,而且很繁琐,我们需要对每个可能使用的函数都要重复这个过程。幸运的是,有些库能简化此过程,其中GLAD是目前最新,也是最流行的库 。
GLAD是继GL3W,GLEW之后,当前最新的用来访问OpenGL规范接口的第三方库,官方网址为https://glad.dav1d.de/。
GLAD是一个开源的库,GLAD的配置与大多数的开源库有些许的不同,GLAD使用了一个在线服务。在这里我们能够告诉GLAD需要定义的OpenGL版本,并且根据这个版本加载所有相关的OpenGL函数。
二、GLAD配置
(1)、打开GLAD的在线服务(https://glad.dav1d.de/)进行如下设置:
(2)、点击GENERATE按钮,GLAD提供给我们了一个zip压缩文件
(3)、解压glad.zip后里面包含两个头文件,和一个glad.c文件
(4)、将两个头文件目录**(glad和KHR)** 复制到上一章节2.6步骤中创建的存放OpenGL库文件的的Include文件夹中
(5)、添加glad.c文件到你的工程中
接着上一章节创建的项目:右击项目,选择添加>>现有项
至此GLAD 也已经配置成功
三、测试GLAD库和GLFW库是否成功链接进项目
(1)在我们创建的MyFirstOpenGL项目里,新建一个.cpp文件命名main.cpp
(2) 编写引入库文件代码
注意: 请确保GLAD头文件的引入需在GLFW之前,因为GLAD的头文件包含了正确的OpenGL头文件(例如GL/gl.h
),所以需要在引入其他依赖于OpenGL的头文件之前先引入GLAD。
(3)点击编译,如果没有提示任何的错误,表示GLAD库和GLFW库引用成功
四、初始化GLAD库,加载所有OpenGL函数指针
GLAD是用来管理OpenGL的函数指针的,所以在调用任何OpenGL的函数之前我们需要初始化GLAD,从而让我们能够使用所有OpenGL函数。
**参数1:**GLADloadproc类型的函数指针地址。这里我们通过GLFW中的glfwGetProcAddress属性获取了函数指针的的地址;
cpp
if (!gladLoadGLLoader((GLADloadproc)glfwGetProcAddress))
{
//加载函数地址失败
//打印错误信息
std::cout << "Failed to initialize GLAD" << std::endl;
return -1;
}