[C++] 240 SDL : ウィンドウの表示 MacOS固有のトラブル

[M1 Mac, Monterey 12.6.3, clang 13.0.0, SDL 2.26.2, NO IDE]

SDL2を使ってウィンドウを表示させるところでつまずきました。

イベントをチェックするループを設定しないとダメなようです。日本語ユーザーの方がおなじみのStackOverflow英語版で解決法を見つけてくれていました。

ただこのコードではマウスクリックやキー押下に反応してしまうので、スクリーンショットが撮れません。少し修正が必要です。

一応MacOSでも使えるようにしてくれていますが、初心者は実質門前払いのような状況です。

クロスプラットホームと言いながらdmgインストーラにはMacの文字は見当たらず。どう見てもSDLの開発者はMacユーザーに冷たいですね。ゲーム界隈の方はApple嫌いが多いとか?

#include "SDL2/SDL.h"
#include <stdio.h>

int main(int argc, char* argv[]) {
    SDL_Window *window;
    SDL_Init(SDL_INIT_VIDEO);

    window = SDL_CreateWindow(
        "SDL Window",
        100,
        100,
        640,
        480,
        0
    );

    if (window == NULL) {
        printf("ウィンドウを生成できません: %s\n", SDL_GetError());
        return 1;
    }

    // MacOS以外では以下ループは不要
    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;
            }
        }
    }

    SDL_DestroyWindow(window);
    SDL_Quit();
    return 0;
}

参考サイト