Как менять размер текстуры вместе с размером окна в SDL?

Я гуглил уже похожие вопросы, но мой отличается, сразу скажу. Во всех ответах в SDL_RenderCopy просто передают NULL в src и destRect. У меня задача в следущем:

int main() {
    SDL_Window* window;
    SDL_Renderer* renderer;
    if (SDL_Init(SDL_INIT_EVERYTHING) < 0) 
        return 1;
    if (!IMG_Init(IMG_INIT_PNG)) 
        return 1;
    window = SDL_CreateWindow("test", SDL_WINDOWPOS_CENTERED,
                             SDL_WINDOWPOS_CENTERED, 
                             640, 480, 
                             SDL_WINDOW_SHOWN | SDL_WINDOW_RESIZABLE | SDL_RENDERER_PRESENTVSYNC);
    SDL_SetHint(SDL_HINT_RENDER_SCALE_QUALITY, "linear");
    renderer = SDL_CreateRenderer(window, -1, 0);
    SDL_Texture *_maintx = IMG_LoadTexture(renderer, "tankScaled.png");
    

    SDL_Rect srcRect;
    SDL_Rect destRect;
    srcRect.x = 0;
    srcRect.y = 0;
    srcRect.w = destRect.w = 52;
    srcRect.h = destRect.h = 64;
    destRect.x = 5;
    destRect.y = 100;
    if(!_maintx){
        SDL_Log("Unable to create texture from %s! SDL Error: %s\n", 
                "tankScaled.png", 
                SDL_GetError());
    }
    SDL_Event ev;
    while (true){
        while (SDL_PollEvent(&ev))
            if (ev.type == SDL_QUIT) 
                return 0;
            SDL_SetRenderDrawColor(renderer, 255, 0, 0, 255);
            SDL_RenderClear(renderer);
            SDL_RenderCopy(renderer, _maintx, &srcRect, &destRect);
            SDL_RenderPresent(renderer);
            SDL_Delay(10);
    }
    return 0;
}

Картинка:

Сам Танк

Как можно заметить картинка у меня некоторого размера, а конкретно 52x64 пикселя. Как мне сделать так, чтобы при ресайзе окна, ресайзилась и эта картинка? Вот пусть 52x64 у нее будет размер если размер окна 1280x720(к примеру), сделал юзер окно больше - картинка растянулась, сделал меньше - уменьшилась. Я могу это руками высчитывать, но разве так делают? Может быть есть готовый/красивый подход в sdl ?


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