如何同时使用glad.h和glew.h?

how to use glad.h and glew.h at the same time?

我的opengl版本是4.0,用的是glad3.3。 我想用glTexEnvi(),但是只有glad4.6支持这个功能,我不能用。当我同时包含 glad.h 和 glew.h 时,出现错误 (error C1189:#error:gl.h included before glew.h)。 那么如何同时使用 glad.h 和 glew.h 呢?还是有其他解决方案可以使用 glTexEnvi()? 有人帮忙吗?

你不知道。 Glad and GLEW 都是 OpenGL 加载器。两者做同样的事情;它们提供 OpenGL 函数绑定。使用其中之一。

glTextEnv is a legacy OpenGL function. It is only provided in an compatibility profile OpenGL Context(分别为 OpenGL 1.x 和 2.x)和 OpenGL ES 1.0.
因此 glTexEnv 在核心配置文件上下文、OpenGL ES 2.0 和 OpenGL 3.x 中不可用。

OpenGL specification - Khronos OpenGL registry and OpenGL ES Specification - Khronos OpenGL ES Registry

您必须使用 兼容性 配置文件 OpenGL 3.3 上下文。确保生成 OpenGL 加载程序文件时配置文件类型为 "compatibility",然后定义 glTexEnvi


Glad 是加载程序生成器。您必须为您的目标环境指定 OpenGL (ES) 版本。 Glad 生成一个 API,它为指定环境分别提供了 OpenGL (ES) verison 的可用指令集。如果一条指令在头文件中没有"exist",那么指定的版本不支持它。

相比之下,GLEW 提供的所有 OpenGL 功能都在单个头文件中。您必须注意 OpenGL 上下文是否支持某个函数。