【问题标题】:Best way to rotate an image using SDL?使用 SDL 旋转图像的最佳方法?
【发布时间】:2010-11-14 02:38:18
【问题描述】:

我正在构建一个游戏,主角的手臂将跟随鼠标光标,因此它会非常频繁地旋转。旋转它的最佳方式是什么?

【问题讨论】:

    标签: c++ user-interface image sdl


    【解决方案1】:

    使用 SDL,您有多种选择。


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

    2. 使用类似SDL_gfx 的东西来进行实时旋转/缩放。 (不推荐,很慢)

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


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

    编辑:针对您的评论,我建议您查看 Lazyfoo 的 SDL 教程。 Specifically, this one about rotation。还有一个OpenGl function, glRotatef,对您的情况很有用。快速搜索带回this little tidbit,这也可能会有所帮助。

    【讨论】:

    • 我想探索一下 OpenGL 路线,但是,我从未使用过它。您在网站上有什么建议可以开始轮换教程吗?
    • 我查看了 NeHe 的一些代码,在图像上设置旋转似乎非常乏味......我完全无法理解,关于这个主题有什么帮助吗?
    • 我已经很长时间没有使用 OpenGL 了。您的 OpenGL 特定旋转问题可能是一个新问题的好主题。你一定会得到比我能给出的更好的答案。
    • 只是想为您的选项 1(这是最常见的方法)添加它,RotSprite 是一个很好的解决方案 - 谷歌它,它是一个免费工具。另请注意,还有一个选项 4:使用矩阵自己编写;请参阅 Mark Ransom 的回答 here
    • 感谢某人的最佳方式是对他们的评论点赞 :)
    【解决方案2】:
    SDL_RenderCopyEx()
    

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

    【讨论】:

      【解决方案3】:

      您可以使用像 SDL_gfx 这样的库

      【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-07-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-01-16
      • 1970-01-01
      相关资源
      最近更新 更多