8

为什么我会收到这些错误?

错误:未在此范围内声明
“GL_VERTEX_SHADER”错误:未在此范围内声明“glCreateShader”

代码:

GLuint vs = glCreateShader(GL_VERTEX_SHADER);

是的,我确实有多余的东西。

4

3 回答 3

7

返回什么glGetString(GL_VERSION)

CreateShader不在 GLUT 中,而是在 OpenGL 2.0 中。如果您的“包含过剩”由于某种原因不包含gl.h或您的 GL 版本低于 2.0,则标题不会声明它。

我还会检查你gl.h的是否CreateShader真的在那里声明。

编辑:这个 OpenGL 标头版本的东西似乎是 Windows 中的一个普遍问题。大多数人建议使用GLEW或其他扩展加载程序库来解决它。

于 2012-08-15T00:34:22.857 回答
3

您需要使用OpenGL 加载库来加载 OpenGL 函数,或者自己手动加载函数。你不能只使用gl.h并期望得到一切。

于 2012-08-15T01:10:48.843 回答
0

libepoxy就像一个扩展的gl.h;

#include <GL/gl.h可以替换为#include <epoxy/gl.h>,-lGL-lepoxy。如果您使用的是 Windows/Mac,则必须构建源代码,因此如果您已经拥有自己喜欢的加载器,这可能不值得,但我发现它可以很好地替代GL/gl.hGL3.3 +,消除了错误。

于 2020-08-07T15:27:46.380 回答