Я пишу 2D-платформерную игру, используя SDL с С++. Однако я столкнулся с огромной проблемой, связанной с масштабированием до разрешения. Я хочу, чтобы игра выглядела хорошо в полном HD, поэтому все изображения для игры были созданы так, чтобы естественное разрешение игры было 1920x1080. Однако я хочу, чтобы игра уменьшалась до правильного разрешения, если кто-то использует меньшее разрешение или масштабируется больше, если кто-то использует большее разрешение.
Проблема заключается в том, что я не смог найти эффективный способ сделать это. Я начал с использования библиотеки SDL_gfx для предварительного масштабирования всех изображений, но это не работает, поскольку оно создает много автономных, одна ошибка, когда один пиксель терялся. И поскольку мои анимации содержатся в одном изображении, когда анимация будет воспроизводиться, анимация будет слегка перемещаться вверх или вниз по каждому кадру.
Затем, после некоторого оглядки, я попытался использовать opengl для обработки масштабирования. В настоящее время моя программа рисует все изображения на SDL_Surface, которая составляет 1920x1080. Затем он преобразует эту поверхность в текстуру opengl, масштабирует эту текстуру до разрешения экрана, затем рисует текстуру. Это прекрасно работает визуально, но проблема в том, что он неэффективен вообще. В настоящее время я получаю max fps 18: (
Итак, мой вопрос: кто-нибудь знает об эффективном способе масштабирования отображения SDL на разрешение экрана?