Отображение окна SDL2

Пытаюсь начать писать проект с использованием SDL2 на С. На прошлой ОС (и текущая и прошлая Ubuntu) всё получилось настроить, но сейчас почему-то не показывается окно приложения при запуске. Ошибок никаких не выдаёт, пишет, что всё хорошо, на зависимости или CMake тоже не ругается, но окно не показывает. Есть предположение, что накосячил с установкой SDL2, потому устанавливал и локально в папочку SDL и с помощью apt-get, но в итоге SDL удалил, что всё равно не помогло.

main.c

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

#define WINDOW_WIDTH 640
#define WINDOW_HEIGHT 480

#define BACKGROUND_COLOR 0x353535FF

void *scp(void *p)
{
    if (p == NULL)
    {
        printf("SDL Error: %s\n", SDL_GetError());
        exit(1);
    }
    return p;
}

int scc(int code)
{
    if (code < 0)
    {
        printf("SDL Error: %s\n", SDL_GetError());
        exit(1);
    }
    return code;
}

int main()
{
    scc(SDL_Init(SDL_INIT_VIDEO));

    SDL_Window *window = scp(SDL_CreateWindow("Hello World!",
                                              SDL_WINDOWPOS_CENTERED, SDL_WINDOWPOS_CENTERED,
                                              WINDOW_WIDTH, WINDOW_HEIGHT, SDL_WINDOW_RESIZABLE));

    SDL_Renderer *const renderer = scp(SDL_CreateRenderer(
        window, -1,
        SDL_RENDERER_SOFTWARE));
    scc(SDL_RenderSetLogicalSize(renderer, WINDOW_WIDTH, WINDOW_HEIGHT));

    SDL_Event e;
    bool quit = false;
    SDL_ShowWindow(window);
    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_SetRenderDrawColor(renderer, (BACKGROUND_COLOR >> 24) & 0xFF, (BACKGROUND_COLOR >> 16) & 0xFF, (BACKGROUND_COLOR >> 8) & 0xFF, BACKGROUND_COLOR & 0xFF);
        SDL_RenderClear(renderer);
        SDL_RenderPresent(renderer);
    }
    SDL_DestroyWindow(window);
    SDL_Quit();

    return 0;
}

CMakeLists.txt

cmake_minimum_required(VERSION 3.5)
project(mygame)

# Create an option to switch between a system sdl library and a vendored sdl library
option(MYGAME_VENDORED "Use vendored libraries" OFF)

if(MYGAME_VENDORED)
    add_subdirectory(vendored/sdl EXCLUDE_FROM_ALL)
else()
    # 1. Look for a SDL2 package, 2. look for the SDL2 component and 3. fail if none can be found
    find_package(SDL2 REQUIRED CONFIG REQUIRED COMPONENTS SDL2)

    # 1. Look for a SDL2 package, 2. Look for the SDL2maincomponent and 3. DO NOT fail when SDL2main is not available
    find_package(SDL2 REQUIRED CONFIG COMPONENTS SDL2main)
endif()

# Create your game executable target as usual
add_executable(mygame main.c)

# SDL2::SDL2main may or may not be available. It is e.g. required by Windows GUI applications
if(TARGET SDL2::SDL2main)
    # It has an implicit dependency on SDL2 functions, so it MUST be added before SDL2::SDL2 (or SDL2::SDL2-static)
    target_link_libraries(mygame PRIVATE SDL2::SDL2main)
endif()

# Link to the actual SDL2 library. SDL2::SDL2 is the shared SDL library, SDL2::SDL2-static is the static SDL libarary.
target_link_libraries(mygame PRIVATE SDL2::SDL2)

CmakePresets.json

{
    "version": 8,
    "configurePresets": [
        {
            "name": "Configure preset using toolchain file",
            "displayName": "Configure preset using toolchain file",
            "description": "Sets Ninja generator, build and install directory",
            "generator": "Ninja",
            "binaryDir": "${sourceDir}/out/build/${presetName}",
            "cacheVariables": {
                "CMAKE_BUILD_TYPE": "Debug",
                "CMAKE_TOOLCHAIN_FILE": "",
                "CMAKE_INSTALL_PREFIX": "${sourceDir}/out/install/${presetName}"
            }
        }
    ]
}

Пробовал спрашивать у chatgpt, говорит, что всё должно быть нормально. Даже дрова проверял


Ответы (0 шт):