【发布时间】:2010-11-14 02:38:18
【问题描述】:
我正在构建一个游戏,主角的手臂将跟随鼠标光标,因此它会非常频繁地旋转。旋转它的最佳方式是什么?
【问题讨论】:
标签: c++ user-interface image sdl
我正在构建一个游戏,主角的手臂将跟随鼠标光标,因此它会非常频繁地旋转。旋转它的最佳方式是什么?
【问题讨论】:
标签: c++ user-interface image sdl
使用 SDL,您有多种选择。
提前旋转所有精灵(预渲染所有可能的旋转)并像渲染任何其他精灵一样渲染它们。这种方法速度很快,但使用更多的内存和更多的精灵。正如@Nick Wiggle 所指出的,RotSprite 是生成精灵变换的好工具。
使用类似SDL_gfx 的东西来进行实时旋转/缩放。 (不推荐,很慢)
在 OpenGL 模式下使用 SDL 并将您的精灵渲染为基元,对基元应用旋转。
选项3 可能是您最好的选择,因为您可以获得使用OpenGL 的所有优势。如何去做真的取决于你。您也可以加载精灵,使用 SDL_gfx 执行所有旋转计算,然后将旋转后的版本保存到内存中的 SDL_Surface。
编辑:针对您的评论,我建议您查看 Lazyfoo 的 SDL 教程。 Specifically, this one about rotation。还有一个OpenGl function, glRotatef,对您的情况很有用。快速搜索带回this little tidbit,这也可能会有所帮助。
【讨论】:
SDL_RenderCopyEx()
对于旋转、翻转和旋转中心有额外的参数。
【讨论】:
您可以使用像 SDL_gfx 这样的库
【讨论】:
rotozoomSurface(...):ferzkopp.net/Software/SDL_rotozoom 或 rotateSurface90Degrees(...)