2009-07-26 7 views

ответ

19

С SDL у вас есть несколько вариантов.

  1. Поворот все спрайты заранее (предварительно делают все возможные повороты) и сделать их, как и любой другой спрайт. Этот подход выполняется быстро, но использует больше памяти и больше спрайтов. Как указывал @Nick Wiggle, RotSprite - отличный инструмент для создания трансформирования спрайтов.

  2. Используйте что-то наподобие SDL_gfx, чтобы сделать вращение в реальном времени/масштабирование. (Не рекомендуется, очень медленно)

  3. Используйте SDL в режиме OpenGL и визуализируйте спрайты на примитивы, применяя поворот к примитивам.

Вариант 3, вероятно, лучший выбор, потому что вы получаете все преимущества использования OpenGL. Это действительно зависит от вас, как это сделать. Также возможно, что вы можете загрузить спрайты, выполнить все вычисления вращения с помощью SDL_gfx, а затем сохранить повернутые версии в SDL_Surface в памяти.

EDIT: В ответ на ваш комментарий я бы рекомендовал проверить преподавателей Lazyfoo SDL. Specifically, this one about rotation. Существует также OpenGl function, glRotatef, который может быть полезен в вашем случае. Быстрый поиск привел обратно this little tidbit, что также может быть полезно.

+0

Я думаю, что хотел бы изучить маршрут OpenGL, однако, я никогда не работал с ним. Есть ли у вас какие-либо рекомендации на веб-сайте, чтобы начать обучение по ротации? – Justen

+0

Я посмотрел на какой-то код от NeHe, и это кажется невероятно утомительным, чтобы настроить поворот на изображении ... Я не понимаю его вообще, какую-либо помощь по этой теме? – Justen

+0

Я не работал/не работал с OpenGL в течение длительного времени. Ваш вопрос о ротации, связанный с OpenGL, может стать хорошей темой для нового вопроса. Вы должны получить гораздо лучший ответ, чем я могу дать. –

2

Вы можете использовать библиотеку как SDL_gfx

0
SDL_RenderCopyEx() 

имеет дополнительные аргументы в отношении поворота, поворота и центра вращения.

Смежные вопросы