我在显示器之外启动显示、渲染器和 OGL 上下文。这些都没有给出错误,以下是我创建这些元素的方式。
if (SDL_Init(SDL_INIT_EVERYTHING) < 0)
{
printf("SDL initialization failed: %s\n", SDL_GetError());
return false;
}
SDL_GL_SetAttribute(SDL_GL_DOUBLEBUFFER, 1);
if ((display = SDL_CreateWindow("",
50, 50, 600, 600, SDL_WINDOW_OPENGL)) == NULL)
{
printf("Could not create window: %s\n", SDL_GetError());
return false;
}
if ((graphics = SDL_CreateRenderer(display, -1, 0)) == NULL)
{
printf("Could not get renderer: %s\n", SDL_GetError());
return false;
}
if ((*context = SDL_GL_CreateContext(display)) == NULL)
{
printf("Could not get context: %s\n", SDL_GetError());
return false;
}
GLenum err = glewInit();
if (GLEW_OK != err)
{
printf("GLEW couldn't be initialized: %s\n", glewGetErrorString(err));
return false;
}
scene = SceneManager();
return true;
现在,在这些之后,像 glClearColor 或 glClear 这样的方法按预期工作,但是,像 glCreateProgram 或 glActiveTexture 这样的方法指向 NULL 并引发运行时异常。如果我不在标题中包含 glew,则甚至无法识别这些功能。
我是否以某种方式丢失了我的 OpenGL 上下文并最终出现错误,或者这些函数没有在 SDL 中定义,我必须使用另一个库来链接这些函数?