SDL2库无法初始化

时间:2014-02-02 13:06:21

标签: c++ opengl sdl glfw

我目前正在使用SDL2和GLFW3来创建一些OpenGL游戏。初始化和使用GLFW3没有问题;我正在使用GLFW3创建OpenGL上下文,窗口,键输入等,SDL2用于将图像加载到SDLSurfaces然后将它们转换为OpenGL纹理,但与GLFW3不同,SDL2无法初始化。我的初始化代码如下所示:

if (!SDL_Init(SDL_INIT_EVERYTHING)) return -1;

它总是返回-1并退出main函数。有谁知道为什么会发生这种情况?

1 个答案:

答案 0 :(得分:3)

问题

问题不在于SDLSDL实际初始化完全正常。问题是如何检查初始化是否成功。看看documentation for SDL_Init()

  

成功时返回0或失败时返回负错误代码;呼叫   SDL_GetError()获取更多信息。

在您的代码中

if (!SDL_Init(SDL_INIT_EVERYTHING)) return -1;

if中,SDL_Init(SDL_INIT_EVERYTHING)部分将返回0,其评估为false,但仍表示SDL已成功初始化。前面的!表示整个if评估为true,并且会返回-1

解决方案

更好的解决方法是检查它是否等于0,如果确实失败,则使用SDL_GetError()来打印错误。

if ( SDL_Init(SDL_INIT_EVERYTHING) != 0 )
{
    std::cout << "Error : " << SDL_GetError() << std::endl;
    return -1;
}