hola, bueno encontre esta funcion en la web, la cual rota la imagen, pero usando una superficie, en este caso una imagen temporal como comenta evilgoblin (creo), la dejo para que la analisen
void rotarimagen(SDL_Surface *src, int x, int y, float zoomx, float zoomy, float angle)
{
// Superficie temporal con las modificaciones correspondientes
SDL_Surface *tmp;
// Posición donde dibujaremos la superficie en pantalla
SDL_Rect pos={x, y, 0, 0};
// Creamos superficie rotada y/o escalada sin anti-aliasing
tmp=rotozoomSurfaceXY(src, angle, zoomx, zoomy, 0);
// Arreglo posición de la imagen ya que la rotación
// es con respecto al centro de la imagen
pos.x -= (tmp->w - src->w) / 2;
pos.y -= (tmp->h - src->h) / 2;
// Dibujamos en pantalla la nueva superficie
// Nota: screen es la variable que nos devolvió
// la función SDL_SetVideoMode
SDL_BlitSurface(tmp, NULL, screen, &pos);
// Eliminamos de la memoria la superficie temporal
SDL_FreeSurface(tmp);
}
en este caso seria bueno declarar las superficies, fuera del main, como atributo de toda la aplicacion, asi se puede modificar desde las funciones que se creen
...
rotozoom es una funcion un poco precaria, pero la unica q conozco. Sirve para darle zoom o rotar.
pero aveces distorciona un poco la imagen, asi que la recomendacion es siempre tener 2 surface 1 con el original y otra la q se va a mostrar
si lo rotas varias veces lo rotas siempre del original.
el zoom y el
foco debe estar en 1, si solo deseas rotar.
es mejor usar imagenes PNG con
original = IMG_Load ("auto.png");
movimiento = rotozoomSurface (original, angulo, 1, 1);
buen detalle a tomar en cuenta
saludos