LOADING

加载过慢请开启缓存 浏览器默认开启

GLAD和OpenGL

笔记8 GLAD和OpenGL

细节的问题后面我们再慢慢补,先把流程具体描述一下。

首先就是去网站上下载对应的教程的glad的源码。

然后编写更改对应的premake文件。

引进对应的的项目,然后Hazel链接等等,和前面步骤差不多,也就不多赘述了,可以参照前面的premake看glad。

之后就是在windowswindow初始化的时候,顺便初始化glad,为其创建上下文,之类的操作。

image-20241109183157988

(之后还有对这个步骤的优化,后面在说)


然后再提到一个问题就是Glad和glfw的头文件先后包含顺序。

一般的是我们先包含glad,然后在引入glfw。

解释如下

GLAD 是 OpenGL 函数加载器glad 用于加载 OpenGL 的函数指针,它在包含 glfw 之前初始化 OpenGL 函数指针,以确保在调用 OpenGL 函数时已经正确加载了它们。

GLFW 依赖 GLAD 的加载glfw 只是一个窗口管理库,它在创建 OpenGL 上下文时依赖 OpenGL 函数。如果没有先通过 glad 加载函数,可能会出现未定义的行为,导致程序崩溃或错误。

然后也是遇到了重复包含的报错。于是我们在glfw文件中找到包含的文件(与glad发生冲突的文件)。

严重性	代码	说明	项目	文件	行	禁止显示状态	详细信息
错误	C1189	#error:  OpenGL header already included, remove this include, glad already provides it	Hazel	C:\Users\86182\Desktop\openGL\Hazel_Engine\Hazel\Hazel\vendor\Glad\include\glad\glad.h	27
image-20241109184424445

然后我们就选择在premake的Hazel项目中加入了这个宏定义。

image-20241109184611300

如果没有 GLFW_INCLUDE_NONEglfw3.h 可能会包含 OpenGL 相关头文件(如 <GL/gl.h>),这会和其他 OpenGL 函数加载库(如 gladGLEW)冲突。使用 GLFW_INCLUDE_NONE 可以避免这种冲突,确保由 glad 来加载 OpenGL 函数。