INVALID_ENUM使用glew

时间:2014-11-06 20:20:24

标签: c++ opengl sdl game-engine glew

我目前正尝试使用SDL和glew在c ++中编写一个小游戏。我的问题是每当我尝试使用glew的函数时(例如:glMatrixMode(GL_PROJECTION)),我都会收到此错误:GL_INVALID_ENUM。

这就是我创建窗口的方式:

SDL_Init(SDL_INIT_EVERYTHING);

SDL_GL_SetAttribute(SDL_GL_CONTEXT_PROFILE_MASK, SDL_GL_CONTEXT_PROFILE_CORE);
SDL_GL_SetAttribute(SDL_GL_CONTEXT_MAJOR_VERSION, 3);
SDL_GL_SetAttribute(SDL_GL_CONTEXT_MINOR_VERSION, 2);

window = SDL_CreateWindow(title.c_str(), SDL_WINDOWPOS_CENTERED, SDL_WINDOWPOS_CENTERED, width, height, SDL_WINDOW_OPENGL | SDL_WINDOW_RESIZABLE);
context = SDL_GL_CreateContext(window);

SDL_GL_SetSwapInterval(1);

这就是我初始化glew的方式:

glewExperimental = GL_TRUE;
GLenum res = glewInit();
if (res != GLEW_OK) fprintf(stderr, "Error: '%s'\n", glewGetErrorString(res));

我试图禁用glewExperimental,但它什么都没改变。

1 个答案:

答案 0 :(得分:1)

问题是我使用OpenGL的核心配置文件而不是使用兼容性配置文件来使用不推荐使用的API部分。要解决这个问题,应该替换

SDL_GL_SetAttribute(SDL_GL_CONTEXT_PROFILE_MASK, SDL_GL_CONTEXT_PROFILE_CORE);

使用:

SDL_GL_SetAttribute(SDL_GL_CONTEXT_PROFILE_MASK, SDL_GL_CONTEXT_PROFILE_COMPATIBILITY);