Hola, me ha surgido el siguiente problema usando SDL.
Cargo una imagen con varios frames con transparencia con IMG_Load() en una surface.
En un momento dado quiero copiar un frame a una surface nueva, es decir, la creo primero con SDL_CreateRGBSurface del tamaño del frame, y después hago un SDL_BlitSurface cogiendo el frame que quiero.
Bien el problema es que al ir a mostrar ese nuevo surface, no me aparece nada en pantalla. El surface original es de 32 bits, ya que es un png con transparencia, el que se crea lo creo también de 32 bits con transparencia. Al hacer el Blit, debería quedarme en el nuevo surface el frame deseado con su transparencia, pero parece que no es así, o hay algo que no hago bien.
A ver si esos expertos en SDL me echan una mano :lol: .
Código aproximado:
Cargo una imagen con varios frames con transparencia con IMG_Load() en una surface.
En un momento dado quiero copiar un frame a una surface nueva, es decir, la creo primero con SDL_CreateRGBSurface del tamaño del frame, y después hago un SDL_BlitSurface cogiendo el frame que quiero.
Bien el problema es que al ir a mostrar ese nuevo surface, no me aparece nada en pantalla. El surface original es de 32 bits, ya que es un png con transparencia, el que se crea lo creo también de 32 bits con transparencia. Al hacer el Blit, debería quedarme en el nuevo surface el frame deseado con su transparencia, pero parece que no es así, o hay algo que no hago bien.
A ver si esos expertos en SDL me echan una mano :lol: .
Código aproximado:
Código [Seleccionar]
//Surface con todos los frames
aux = IMG_Load(strName);
aux2 = SDL_DisplayFormatAlpha(aux);
SDL_FreeSurface(aux);
// Surface nuevo, de w*h pixels, 32 bits, canal alpha, etc... (como viene en la docu de SDL).
aux3 = SDL_CreateRGBSurface(SDL_HWSURFACE|SDL_SRCALPHA|SDL_RLEACCEL, w, h, 32,
rmask, gmask, bmask, amask);
m_Surface = SDL_DisplayFormatAlpha(aux3);
//Bliteamos (las coordenadas y demas estan bien)
SDL_BlitSurface(aux2, &orig, m_Surface, &dest);