因OpenGL仅是一种规范/标准,具体的实现是由各驱动厂商针对特定的显卡实现的。鉴于OpenGL的驱动众多,使得大多数函数的位置无法在编译时确定下来,造成这些函数需要在运行时查询,因此,开发者需要检索这些函数的位置并将其地址存储在函数指针中,以方便后续使用。取得函数地址的方式因平台而异,windowns下如下所示:
// define the function's prototype
typedef void (*GL_GENBUFFERS) (GLsizei, GLuint*);
// find the function and assign it to a function pointer
GL_GENBUFFERS glGenBuffers = (GL_GENBUFFERS)wglGetProcAddress("glGenBuffers");
// function can now be called as normal
unsigned int buffer;
glGenBuffers(1, &buffer);
上述代码片段 很繁琐且每次使用这样的函数时都要重复这个过程,GLAD应运而生,解决了这个问题。
GLAD(https://glad.dav1d.de/)是当前最新的访问OpenGL规范的第三方库。
GLAD配置
GLAD采用了一种在线配置的方式,登录https://glad.dav1d.de
此时,将看到include, src两个文件夹,同时还有包含这两个文件夹的压缩文件glad.zip. 后续开发过程中可以将/include/glad.h头文件放到工程目录中的include文件下,并在需要的文件中引用之。同时将glad.c文件复制到自开发工程文件中。
#include <glad/glad.h>