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?
Answer. Answer: Rotate tool is used to rotate the position of a image.
A rotation maps every point of a preimage to an image rotated about a center point, usually the origin, using a rotation matrix. Use the following rules to rotate the figure for a specified rotation. To rotate counterclockwise about the origin, multiply the vertex matrix by the given matrix.
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.
SDL_RenderCopyEx()
has extra arguments for rotation, flipping, and the rotation center.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With