c++ - SDL2 库初始化失败

标签 c++ opengl sdl glfw

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

if (!SDL_Init(SDL_INIT_EVERYTHING)) 返回 -1;

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

最佳答案

问题

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

Returns 0 on success or a negative error code on failure; call SDL_GetError() for more information.

在你的code代码中

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

if 中,SDL_Init(SDL_INIT_EVERYTHING) 部分将返回 0,其计算结果为 false 但它仍然意味着 SDL 已成功初始化。前面的!,表示整个if的计算结果为真,返回-1

解决方案

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

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

关于c++ - SDL2 库初始化失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21510926/

相关文章:

c++ - 捕获音频输出

opengl - 如何使用 GLFW 在当前显示器上创建全屏窗口

opengl - 使用 OpenGL 着色语言进行选择

c++ - 如何制作基本的 FPS 计数器?

visual-studio-2010 - 如何使用VS2010在Windows上静态编译SDL游戏

c - SDL 中的退出事件循环

c++ - 将 C++ 应用程序从 dll 打包到 exe

c++ - 在 C++11 上模拟通用/模板化 lambda

c++ - C++ 中的方法覆盖

c++ - 两个枚举有一些共同的元素,为什么会产生错误?