使用SDL旋转图像的最佳方法?

Jus*_*ten 13 c++ user-interface sdl image

我正在构建一个游戏,主角的手臂将跟随鼠标光标,所以它会频繁旋转.旋转它的最佳方法是什么?

Zac*_*man 20

使用SDL,您有几个选择.

  1. 提前旋转所有精灵(预渲染所有可能的旋转)并像任何其他精灵一样渲染它们.这种方法很快,但使用更多内存和更多精灵.正如@Nick Wiggle所指出的,RotSprite是一个用于生成精灵变换的好工具.

  2. 使用SDL_gfx之类的东西进行实时旋转/缩放.(不推荐,非常慢)

  3. 在OpenGL模式下使用SDL并将精灵渲染为基元,将旋转应用于基元.

选项3可能是您最好的选择,因为您获得了使用OpenGL的所有优势.这取决于你如何做到这一点.您也可以加载精灵,使用SDL_gfx执行所有旋转计算,然后将旋转的版本保存到内存中的SDL_Surface.

编辑:在回应您的评论时,我建议您查看Lazyfoo的SDL tutorals.具体来说,这一个关于旋转.还有一个OpenGl函数,glRotatef在您的情况下可能很有用.快速搜索带回了这个小小的一点,也可能有用.

  • 感谢某人的最佳方式是通过赞美他们的评论:) (3认同)

Jul*_*ard 12

SDL_RenderCopyEx()
Run Code Online (Sandbox Code Playgroud)

有用于旋转、翻转和旋转中心的额外参数。