为什么会出现这些错误?
error: 'GL_VERTEX_SHADER' was not declared in this scope error: 'glCreateShader' was not declared in this scope
编码:
GLuint vs = glCreateShader(GL_VERTEX_SHADER);
是的,我确实有足够的东西可以吃。
von4xj4u1#
glGetString(GL_VERSION)返回什么?CreateShader不在GLUT中,而是在OpenGL 2.0中。如果您的“包含到溢出”由于某种原因而不包含gl.h,或者您的GL版本低于2.0,则标头将不会声明它。我还将检查您的gl.h,以查看CreateShader是否确实在那里声明。编辑:OpenGL头文件版本的问题似乎是Windows中的一个普遍问题。大多数人建议使用GLEW或其他扩展加载器库来解决这个问题。
glGetString(GL_VERSION)
CreateShader
gl.h
5us2dqdw2#
你需要使用OpenGL loading library来加载OpenGL函数,或者使用manually load the functions yourself。你不能只使用gl.h就期望得到所有的东西。
1cosmwyk3#
在尝试访问任何GL名称空间之前,请确保您正在初始化OpenGL上下文。例如,使用GLAD:
// after initializing window if (!gladLoadGLLoader((GLADloadproc)glfwGetProcAddress)) { std::cout << "Failed to initialize GLAD" << std::endl; return -1; }
3条答案
按热度按时间von4xj4u1#
glGetString(GL_VERSION)
返回什么?CreateShader
不在GLUT中,而是在OpenGL 2.0中。如果您的“包含到溢出”由于某种原因而不包含gl.h
,或者您的GL版本低于2.0,则标头将不会声明它。我还将检查您的
gl.h
,以查看CreateShader
是否确实在那里声明。编辑:OpenGL头文件版本的问题似乎是Windows中的一个普遍问题。大多数人建议使用GLEW或其他扩展加载器库来解决这个问题。
5us2dqdw2#
你需要使用OpenGL loading library来加载OpenGL函数,或者使用manually load the functions yourself。你不能只使用
gl.h
就期望得到所有的东西。1cosmwyk3#
在尝试访问任何GL名称空间之前,请确保您正在初始化OpenGL上下文。例如,使用GLAD: