出现GL_LIGHTING和GL_LIGHT0未声明的错误,是因为GLAD 默认未包含 OpenGL 固定管线(Fixed Pipeline)的常量定义(这些属于旧版 OpenGL 特性,核心模式已移除),且缺少对应的头文件或 GLAD 配置。以下是解决方法:
方法一:修改 GLAD 生成配置(兼容固定管线)
GLAD 默认生成的是核心模式(Core Profile) 的加载器,不包含固定管线的常量(如GL_LIGHTING、GL_LIGHT0)。需重新生成支持兼容模式(Compatibility Profile) 的 GLAD:
-
打开GLAD 生成器:
API→gl版本选择3.0及以下(或保持高版本但选择兼容模式);Profile选择Compatibility(兼容模式);- 勾选
Generate a loader,点击GENERATE重新下载 GLAD。

-
替换项目中的 GLAD 文件:
- 将新生成的
glad.c和include/glad/、include/KHR/覆盖到项目中。
- 将新生成的
这样即可识别GL_LIGHTING、GL_LIGHT0等常量,解决编译错误。

被折叠的 条评论
为什么被折叠?



