使用 SDL 旋转图像的最佳方法?
我正在构建一个游戏,主角的手臂将跟随鼠标光标,因此它会非常频繁地旋转。 旋转它的最佳方法是什么?
I am building a game and the main character's arm will be following the mouse cursor, so it will be rotating quite frequently. What would be the best way to rotate it?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
使用 SDL,您有多种选择。
提前旋转所有精灵(预渲染所有可能的旋转)并像渲染任何其他精灵一样渲染它们。 这种方法速度很快,但使用更多内存和更多精灵。 正如 @Nick Wiggle 指出的,RotSprite 是一个生成精灵变换的好工具。 提前
使用诸如SDL_gfx之类的东西来进行实时旋转/缩放。 (不推荐,非常慢)
在 OpenGL 模式下使用 SDL 并将精灵渲染为图元,并对图元应用旋转。
选项
3
可能是您的最佳选择,因为您可以获得使用 OpenGL 的所有优势。 这实际上取决于您想要如何去做。 您还可以加载精灵,使用 SDL_gfx 执行所有旋转计算,然后将旋转版本保存到内存中的 SDL_Surface。编辑:为了回应您的评论,我建议您查看 Lazyfoo 的 SDL 教程。 具体来说,这是关于旋转的。 还有一个 OpenGl 函数,
glRotatef< /code>
,这对您的情况很有用。 快速搜索带回了这个小花絮这也可能有帮助。
With SDL you have a few choices.
Rotate all your sprites in advance (pre-render all possible rotations) and render them like you would any other sprite. This approach is fast but uses more memory and more sprites. As @Nick Wiggle pointed out, RotSprite is a great tool for generating sprite transformations.
Use something like SDL_gfx to do real-time rotation/zooming. (Not recommended, very slow)
Use SDL in OpenGL mode and render your sprites to primitives, applying a rotation to the primitives.
Option
3
is probably your best bet because you gain all of the advantages of using OpenGL. It's really up to you how to want to do it. It's also a possibility that you can load your sprites, perform all rotation calculations with SDL_gfx and then save the rotated versions to an SDL_Surface in memory.EDIT: In response to your comment I would recommend checking out Lazyfoo's SDL tutorials. Specifically, this one about rotation. There is also an OpenGl function,
glRotatef
, which can be useful in your case. A quick search brought back this little tidbit which could also be helpful.有旋转、翻转和旋转中心的额外参数。
has extra arguments for rotation, flipping, and the rotation center.
您可以使用像 SDL_gfx 这样的库
You can use a library like SDL_gfx