SDL窗口不显示

Mic*_*ael 10 c++ xcode sdl

这是我的代码:

#include <iostream>
#include <SDL2/SDL.h>

int main(int argc, const char * argv[]) {

SDL_Init(SDL_INIT_VIDEO);

SDL_Window *_window;
_window = SDL_CreateWindow("Game Engine", SDL_WINDOWPOS_CENTERED, SDL_WINDOWPOS_CENTERED, 700, 500, SDL_WINDOW_RESIZABLE);

SDL_Delay(20000);

SDL_DestroyWindow(_window);
SDL_Quit();

return 0;

}
Run Code Online (Sandbox Code Playgroud)

我在Xcode工作.我已下载SDL2并将库导入项目构建阶段.我已经测试过SDL2是否正常工作.

问题是窗口永远不会出现.我只是得到一个"旋转mac轮",然后程序在延迟后退出.我确保窗口没有隐藏在某处.

想法?

Toa*_*oad 31

你必须给系统一个运行事件循环的机会.

最简单的是自己轮询事件:

SDL_Event e;
bool quit = false;
while (!quit){
    while (SDL_PollEvent(&e)){
        if (e.type == SDL_QUIT){
            quit = true;
        }
        if (e.type == SDL_KEYDOWN){
            quit = true;
        }
        if (e.type == SDL_MOUSEBUTTONDOWN){
            quit = true;
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

而不是等待循环

  • 上面添加/说明:如果发现SDL_GetError()没有报告任何内容,并且SDL_UpdateWindowSurface()/ etc报告为0(无错误),则上述代码很有可能是可修复的,尤其是在OSX上。您可以在视频设置/初始化/初始绘图调用之后放置事件轮询循环。最初的SDL SDK示例曾经用于包含轮询,但在线教程通常会在处理过程中的较晚阶段(处理输入)包含此内容,这可能会造成混乱。 (3认同)
  • 这次真是万分感谢!极大地帮助了我。 (2认同)
  • 这应该被标记为答案:)消除延迟,添加退出的事件方式立即修复它。 (2认同)

Pie*_*rre 1

SDL_Init(SDL_INIT_VIDEO)在创建窗口之前,您需要初始化 SDL 。