Как менять размер текстуры вместе с размером окна в 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 ?
