SDL на самом деле не поддерживает это.
Самый «правильный» способ - использовать базовый графический API (OpenGL или DirectX) для масштабирования.Например, вызов glScale{f,d}
, если вы используете OpenGL под капотом.Я полагаю, что SDL в Windows скомпилирован для использования DirectX, поэтому это не переносимое решение.
Альтернативой является воссоздание всех поверхностей, когда вам необходимо увеличить все по некоторому коэффициенту.Это медленно, но это не нужно делать каждый кадр;это нужно сделать только один раз, когда коэффициент масштабирования изменяется, и затем масштабированная поверхность может быть сохранена в памяти и повторно использована для каждого кадра.
Имейте в виду, что это обычно не имеет смысла для 2Dв играх разрешено масштабированное изменение размера, потому что спрайты выглядят ужасно при растяжении, если не используется какой-либо фильтр.