iizukak の雑記

忘れる前に書いとこう

SDL2 + macOS でウィンドウが表示されない

概要

TwinklebearDev という SDL2 のチュートリアルをやろうとして、Lesson1 の bmp 画像の表示でウィンドウが表示されずはまっていた。調べた結果、macOS において、SDL2 にイベントループを追加しないとウィンドウが描画されないことがある、ということがわかった。

システム情報

  • macOS 10.15.4 Catalina
  • SDL 2.0.12
  • C++ Compiler: Apple clang version 11.0.3

解決策

以下のようなコードをメインループに追加するとウインドウが表示されるようになった。少しググったところ macOS でこういった問題に遭遇する人はちらほらいるようだが、他の OS ではなさそう?

SDL_Event ev;
while(SDL_PollEvent(&ev)) {
    if (ev.type == SDL_QUIT) {
        SDL_DestroyTexture(tex);
        SDL_DestroyRenderer(ren);
        SDL_DestroyWindow(win);
        SDL_Quit();
        return 0;
    }
}

ソースコードの全文は ここ にあります。