OpenGL: glGetError() 在调用 glewInit() 后返回无效的枚举
OpenGL: glGetError() returns invalid enum after call to glewInit()
我使用GLEW和freeglut。出于某种原因,在调用 glewInit() 后,glGetError() 返回错误代码 1280,即使使用 glewExperimental = GL_FALSE。
我无法编译着色器,glGetProgramInfoLog() 返回"在调用 glLinkProgram() 之前,顶点着色器未成功编译。 链接失败。我以前能够编译着色器。
重新安装驱动程序没有帮助。
这是我的代码:
int main(int argc, char* argv[])
{
GLenum GlewInitResult, res;
InitWindow(argc, argv);
res = glGetError(); // res = 0
glewExperimental = GL_TRUE;
GlewInitResult = glewInit();
fprintf(stdout, "ERROR: %sn", glewGetErrorString(GlewInitResult)); // "No error"
res = glGetError(); // res = 1280
glutMainLoop();
exit(EXIT_SUCCESS);
}
void InitWindow(int argc, char* argv[])
{
glutInit(&argc, argv);
glutInitContextVersion(4, 0);
glutInitContextFlags(GLUT_FORWARD_COMPATIBLE);
glutInitContextProfile(GLUT_CORE_PROFILE);
glutSetOption(GLUT_ACTION_ON_WINDOW_CLOSE,
GLUT_ACTION_GLUTMAINLOOP_RETURNS);
glutInitWindowPosition(0, 0);
glutInitWindowSize(CurrentWidth, CurrentHeight);
glutInitDisplayMode(GLUT_DEPTH | GLUT_DOUBLE | GLUT_RGBA);
WindowHandle = glutCreateWindow(WINDOW_TITLE);
GLenum errorCheckValue = glGetError();
if (WindowHandle < 1)
{
fprintf(stderr, "ERROR: Could not create new rendering window.n");
exit(EXIT_FAILURE);
}
glutReshapeFunc(ResizeFunction);
glutDisplayFunc(RenderFunction);
glutIdleFunc(IdleFunction);
glutTimerFunc(0, TimerFunction, 0);
glutCloseFunc(Cleanup);
glutKeyboardFunc(KeyboardFunction);
}
我做错了什么?
你看到这个维基页面上的评论了吗?
http://www.opengl.org/wiki/OpenGL_Loading_Library
它提到了为什么会发生这种情况,并说"在某些情况下,根据你的glew版本,在指定glewExperiment后,你仍然可能会得到GL_INVALID_ENUM"。
听起来只要您没有看到任何其他问题,就可以安全地忽略它。
似乎 glew 只是无法正常工作...对我来说,最简单的解决方案是使用利普西。它不需要任何初始化的东西。只需更换您的
#include <GL/glew.h>
跟
#include <epoxy/gl.h>
#include <epoxy/glx.h>
并删除所有 glew 代码。如果使用 gcc,您还必须将"-lGLEW"替换为"-lepoxy"。就是这样。例如,我有这样的东西:
g++ main.cpp -lepoxy -lSDL2 -lSDL2_image -lSDL2_mixer -lglut -lGLU -o main
将环氧标志放在其他人之前似乎很重要。
相关文章:
- 枚举进程模块在有效句柄上返回无效句柄
- Gmock:返回无效值
- get 函数返回无效值
- 为什么VS2017协程不能返回无效?
- 为什么此 DirectX 10 "D3DXVec3Lerp" 函数返回无效数字?
- GetFileAttributes返回无效输入的File_attribute_directory
- 通过fscanf()获取文本文件中的所有字符将返回无效的字符计数
- 返回无效引用
- DirectShow BindToObject返回无效句柄
- math.h中的函数使用C++/clr返回无效结果
- 从RegQueryValueEx()DWORD返回无效数据
- OpenGL: glGetError() 在调用 glewInit() 后返回无效的枚举
- QDateTime::fromstring( __DATE__, "MMM d yyyy" ) 返回无效
- QDateTime::fromString返回无效日期,我缺少什么
- 地址操作符在嵌入式环境中返回无效地址
- 在Linux下,由于sin6_port值,sendto在UDP原始套接字ipv6上返回无效参数
- Inet_aton()返回无效IP地址成功
- FindFirstFile总是返回无效句柄
- 使用openxml编辑docx将返回无效的内存流
- WinInet HttpQuery信息返回无效状态码