为什么我会收到这些错误?
错误:未在此范围内声明
“GL_VERTEX_SHADER”错误:未在此范围内声明“glCreateShader”
代码:
GLuint vs = glCreateShader(GL_VERTEX_SHADER);
是的,我确实有多余的东西。
为什么我会收到这些错误?
错误:未在此范围内声明
“GL_VERTEX_SHADER”错误:未在此范围内声明“glCreateShader”
代码:
GLuint vs = glCreateShader(GL_VERTEX_SHADER);
是的,我确实有多余的东西。
返回什么glGetString(GL_VERSION)
?
CreateShader
不在 GLUT 中,而是在 OpenGL 2.0 中。如果您的“包含过剩”由于某种原因不包含gl.h
或您的 GL 版本低于 2.0,则标题不会声明它。
我还会检查你gl.h
的是否CreateShader
真的在那里声明。
编辑:这个 OpenGL 标头版本的东西似乎是 Windows 中的一个普遍问题。大多数人建议使用GLEW或其他扩展加载程序库来解决它。
您需要使用OpenGL 加载库来加载 OpenGL 函数,或者自己手动加载函数。你不能只使用gl.h
并期望得到一切。
libepoxy就像一个扩展的gl.h
;
#include <GL/gl.h
可以替换为#include <epoxy/gl.h>
,-lGL
和-lepoxy
。如果您使用的是 Windows/Mac,则必须构建源代码,因此如果您已经拥有自己喜欢的加载器,这可能不值得,但我发现它可以很好地替代GL/gl.h
GL3.3 +,消除了错误。