'glCreateShader'未在此范围内声明?

时间:2012-08-15 00:24:32

标签: c++ opengl compiler-errors

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

  

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

代码:

GLuint vs = glCreateShader(GL_VERTEX_SHADER);

是的,我确实有过剩的包容。

3 个答案:

答案 0 :(得分:6)

glGetString(GL_VERSION)返回什么?

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

我还会检查您的gl.h,看看是否真的在那里宣布CreateShader

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

答案 1 :(得分:3)

您需要使用OpenGL loading library加载OpenGL函数,或manually load the functions yourself。你不能只使用gl.h并希望得到所有东西。

答案 2 :(得分:0)

enter image description here就像扩展的gl.h;

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