Why am I getting these errors?
error: 'GL_VERTEX_SHADER' was not declared in this scope
error: 'glCreateShader' was not declared in this scope
Code:
GLuint vs = glCreateShader(GL_VERTEX_SHADER);
And yes, I do have the includes to glut.
Why am I getting these errors?
error: 'GL_VERTEX_SHADER' was not declared in this scope
error: 'glCreateShader' was not declared in this scope
Code:
GLuint vs = glCreateShader(GL_VERTEX_SHADER);
And yes, I do have the includes to glut.
What does glGetString(GL_VERSION)
return?
CreateShader
is not in GLUT but OpenGL 2.0. If your "includes to glut" are not including gl.h
for some reason or your GL version is less than 2.0, the headers will not declare it.
I'd also check your gl.h
to see if CreateShader
is actually declared there.
Edit: This OpenGL header version thing seems to be a general problem in Windows. Most people suggest using GLEW or another extension loader library to get around it.
glGetString(GL_VERSION)
returns 2.0.5279 WinXP Release
It still doesn't work with an include to gl.h
The strange thing is that glCreateShader
is NOT in the gl.h
Why would it not have it? –
Exemption undefined reference to '_imp____glewCreateShader'
–
Exemption #include <windows.h> #include <GL/glew.h> #include <GL/glut.h>
that's all I'm including. –
Exemption -lglew
, perhaps? –
Officer You need to either use an OpenGL loading library to load OpenGL functions, or manually load the functions yourself. You can't just use gl.h
and expect to get everything.
Make sure you are initializing your OpenGL context before you try to access any of the GL namespace. Eg. with GLAD:
// after initializing window
if (!gladLoadGLLoader((GLADloadproc)glfwGetProcAddress))
{
std::cout << "Failed to initialize GLAD" << std::endl;
return -1;
}
© 2022 - 2024 — McMap. All rights reserved.