【问题标题】:SDL_Window not displayed in windowed mode in macOSSDL_Window 在 macOS 中未以窗口模式显示
【发布时间】:2018-01-26 21:07:05
【问题描述】:

运行以下代码,除非我在SDL_CreateWindow 中设置SDL_WINDOW_FULLSCREEN,否则我无法查看窗口。使用任何其他设置,我可以看到进程正在运行,但没有出现任何窗口。我希望能够创建一个窗口化的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;
}

【问题讨论】:

    标签: c++ macos sdl-2


    【解决方案1】:

    您可以尝试添加事件循环而不是 SDL_Delay 吗?

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-06-13
      • 2016-04-25
      • 1970-01-01
      • 1970-01-01
      • 2018-05-22
      • 1970-01-01
      • 1970-01-01
      • 2015-02-16
      相关资源
      最近更新 更多