Я создаю игру, и рука главного героя будет следовать за курсором мыши, поэтому она будет вращаться довольно часто. Как лучше всего его повернуть?
Лучший способ повернуть изображение с помощью SDL?
Ответы (3)
С SDL у вас есть несколько вариантов.
Заранее поверните все свои спрайты (предварительно отрендерив все возможные вращения) и визуализируйте их, как любой другой спрайт. Этот подход быстрый, но требует больше памяти и больше спрайтов. Как отметил @Nick Wiggle, RotSprite - отличный инструмент для создания преобразований спрайтов.
Используйте что-то вроде SDL_gfx для вращения / масштабирования в реальном времени. (Не рекомендуется, очень медленно)
Используйте SDL в режиме OpenGL и визуализируйте свои спрайты в примитивы, применяя вращение к примитивам.
Вариант 3, вероятно, ваш лучший выбор, потому что вы получаете все преимущества использования OpenGL. Вам действительно решать, как это сделать. Также возможно, что вы можете загрузить свои спрайты, выполнить все вычисления вращения с помощью SDL_gfx, а затем сохранить повернутые версии на SDL_Surface в памяти.
РЕДАКТИРОВАТЬ: В ответ на ваш комментарий я бы порекомендовал ознакомиться с руководствами Lazyfoo по SDL. В частности, о вращении. Также имеется функция OpenGl, glRotatef , что может быть полезно в вашем случае. Быстрый поиск вернул этот лакомый кусочек что тоже может быть полезно.
SDL_RenderCopyEx()
имеет дополнительные аргументы для вращения, переворота и центра вращения.
Вы можете использовать такую библиотеку, как SDL_gfx
rotozoomSurface(...) из SDL1 или SDL2: ferzkopp.net/Software/SDL_rotozoom или rotateSurface90Degrees(...)
- person Alexander Lubyagin; 22.06.2021