Я почти уверен, что это совсем не неожиданно, я, вероятно, что-то неправильно понимаю. Я пытаюсь вызвать один из перегруженных конструкторов следующим образом:
SDL_RenderCopy(SDL_Renderer*, SDL_Texture*, SDL_Rect*, SDL_Rect*);
Проблема возникла, когда я создал в классе метод stati c для извлечения указателей SDL_Rect как таковых :
static SDL_Rect* getRectangle(rect r) {
SDL_Rect rectangle{ r.x, r.y, r.w, r.h };
return &rectangle;
}
Итак, вызов такой:
SDL_Rect* r = MyClass::getRectangle(srcRect);
SDL_Rect* r2 = MyClass::getRectangle(destRect);
SDL_RenderCopy(renderer, texture, r, r2);
Все они являются указателями и возвращают согласованные значения, но по какой-то причине я не понимаю, прямоугольники которые я извлекаю из своего класса при передаче в SDL, не масштабируется в соответствии со значениями прямоугольников. Но если я изменю свой метод stati c для возврата копии SDL_Rect
, все будет работать так, как ожидается:
static SDL_Rect getRectangle(rect r) {
SDL_Rect rectangle{ r.x, r.y, r.w, r.h };
return rectangle;
}
И вызов:
SDL_Rect r = Video::getRectangle(srcRect);
SDL_Rect r2 = Video::getRectangle(destRect);
SDL_RenderCopy(renderer, texture, &r, &r2);