Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/user-interface/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 使用SDL旋转图像的最佳方法?_C++_User Interface_Image_Sdl - Fatal编程技术网

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

C++ 使用SDL旋转图像的最佳方法?,c++,user-interface,image,sdl,C++,User Interface,Image,Sdl,我正在制作一个游戏,主要角色的手臂将跟随鼠标光标,因此它将非常频繁地旋转。旋转它的最佳方式是什么?您可以使用SDL_gfx之类的库,SDL有几个选择 提前旋转所有精灵(预渲染所有可能的旋转),并像渲染任何其他精灵一样渲染它们。这种方法速度很快,但使用更多内存和更多精灵。如前所述,是生成sprite转换的一个很好的工具 使用类似的方法进行实时旋转/缩放。(不推荐,速度非常慢) 在OpenGL模式下使用SDL并将精灵渲染为基本体,对基本体应用旋转 选项3可能是您的最佳选择,因为您获得了使用Ope

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

您可以使用SDL_gfx之类的库,SDL有几个选择


  • 提前旋转所有精灵(预渲染所有可能的旋转),并像渲染任何其他精灵一样渲染它们。这种方法速度很快,但使用更多内存和更多精灵。如前所述,是生成sprite转换的一个很好的工具

  • 使用类似的方法进行实时旋转/缩放。(不推荐,速度非常慢)

  • 在OpenGL模式下使用SDL并将精灵渲染为基本体,对基本体应用旋转


  • 选项
    3
    可能是您的最佳选择,因为您获得了使用OpenGL的所有优势。怎么做完全取决于你自己。您还可以加载精灵,使用SDL_gfx执行所有旋转计算,然后将旋转版本保存到内存中的SDL_曲面

    编辑:对于您的评论,我建议您查看Lazyfoo的SDL教程。还有一个在您的情况下很有用的方法。一个快速的搜索也会有帮助

    SDL_RenderCopyEx()
    

    具有旋转、翻转和旋转中心的额外参数

    我想我想探索OpenGL路线,但是,我从未使用过它。你在网站上有什么关于旋转教程的建议吗?我看过NeHe的一些代码,在图像上设置旋转似乎非常乏味。。。我一点也不懂,这个话题有什么帮助吗?我很久没有使用OpenGL了。您的OpenGL特定旋转问题可能是一个新问题的好主题。你肯定会得到比我能给出的更好的答案。只是想为你的选项1(这是最常见的方法)补充一点,RotSprite是一个伟大的解决方案——谷歌it,它是一个免费的工具。还要注意的是,还有一个选项4:使用矩阵自己编写;请看马克·兰森的回答。感谢某人的最好方式是对他们的评论投赞成票:)