opengl 'glCreateShader'未在此范围中宣告?

bis0qfac  于 2022-11-04  发布在  其他
关注(0)|答案(3)|浏览(401)

为什么会出现这些错误?

error: 'GL_VERTEX_SHADER' was not declared in this scope
error: 'glCreateShader' was not declared in this scope

编码:

GLuint vs = glCreateShader(GL_VERTEX_SHADER);

是的,我确实有足够的东西可以吃。

von4xj4u

von4xj4u1#

glGetString(GL_VERSION)返回什么?
CreateShader不在GLUT中,而是在OpenGL 2.0中。如果您的“包含到溢出”由于某种原因而不包含gl.h,或者您的GL版本低于2.0,则标头将不会声明它。
我还将检查您的gl.h,以查看CreateShader是否确实在那里声明。
编辑:OpenGL头文件版本的问题似乎是Windows中的一个普遍问题。大多数人建议使用GLEW或其他扩展加载器库来解决这个问题。

5us2dqdw

5us2dqdw2#

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

1cosmwyk

1cosmwyk3#

在尝试访问任何GL名称空间之前,请确保您正在初始化OpenGL上下文。例如,使用GLAD:

// after initializing window

if (!gladLoadGLLoader((GLADloadproc)glfwGetProcAddress))
{
    std::cout << "Failed to initialize GLAD" << std::endl;
    return -1;
}

相关问题