我目前正尝试使用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,但它什么都没改变。
答案 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);