代码之家  ›  专栏  ›  技术社区  ›  brianpmaher

在macOS中,SDL\u窗口未以窗口模式显示

  •  5
  • brianpmaher  · 技术社区  · 8 年前

    运行以下代码时,除非设置 SDL_WINDOW_FULLSCREEN 在里面 SDL_CreateWindow . 使用任何其他设置,我可以看到进程正在运行,但不会显示任何窗口。我希望能够创建一个窗口 SDL_Window . 我错过什么了吗?

    运行macOS Sierra,SDL v2.0.7

    #include <SDL2/SDL.h>
    
    int main() {
        if (SDL_Init(SDL_INIT_VIDEO) != 0) {
            SDL_Log("Unable to initialize SDL: %s", SDL_GetError());
            return 1;
        }
    
        SDL_Window *window = SDL_CreateWindow(
            "Title",
            SDL_WINDOWPOS_CENTERED,
            SDL_WINDOWPOS_CENTERED,
            640,
            800,
            SDL_WINDOW_SHOWN
        );
    
        if (window == NULL) {
            SDL_Log("Unable to create window: %s", SDL_GetError());
            return 1;
        }
    
        SDL_Delay(5000);
    
        // Cleanup.
        SDL_DestroyWindow(window);
        SDL_Quit();
        return 0;
    }
    
    1 回复  |  直到 8 年前
        1
  •  24
  •   aram    8 年前

    是否可以尝试添加事件循环而不是SDL\U延迟?

    bool quit = false;                                      
    SDL_Event e;                                            
    while (!quit) {                                         
        while (SDL_PollEvent(&e)) {                         
            if (e.type == SDL_QUIT) {                       
                quit = true;                                
            }                                               
        }                                                   
    }                                                       
    

    所以,现在我已经在我的Mac电脑上试用了你的代码,但它确实没有显示窗口。您的代码没有给SDL足够的时间来显示屏幕,它只是进入睡眠状态并退出。事件循环显示一个非全屏非最大化窗口。