SDL窗口没有显示?

时间:2014-12-17 02:27:34

标签: c++ sdl sdl-2

我有这个简单的SDL代码。

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

using namespace std;

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

if (SDL_Init(SDL_INIT_EVERYTHING) != 0){
    return 1;
}

SDL_Window * win = SDL_CreateWindow("Window", 0, 0, 1920, 1080, SDL_WINDOW_FULLSCREEN_DESKTOP);

if(win == nullptr){
    return 1;
}


SDL_Quit();
return 0;
}

这些都没有显示窗口,我有错误检查了一切。它以前工作,但现在它只是打开和关闭。我正在使用Xcode,如果有帮助的话。

1 个答案:

答案 0 :(得分:3)

与其他状态一样,您的程序会立即终止,因此窗口应该暂时“闪烁”。您可以使用SDL_Delay

让窗口显示几秒钟
SDL_Window *win = SDL_CreateWindow("Hello World!", 100, 100, 640, 480, SDL_WINDOW_SHOWN);
if (win == nullptr){
    std::cout << "SDL_CreateWindow Error: " << SDL_GetError() << std::endl;
    SDL_Quit();
    return 1;
}

SDL_Delay(2000);

SDL_DestroyWindow(win);
SDL_Quit();

请记得致电SDL_DestroyWindow


while(true) {}循环只会导致程序冻结。您可能需要以下内容,以便它可以监听事件,您可以随意关闭窗口。

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;
        }
    }
}