Hola estoy cargando un gráfico de forma "manual" desde un fichero a una SDL_Surface.
El gráfico es de 16 bits, y después de cargarlo lo convierto con SDL_DisplayFormat al formato de pantalla.
El caso es que en el modo de pantalla de 16 bits, funciona correctamente, pero al usar el modo de video de 32 bits, los colores salen cambiados..
Por ejemplo el color que uso de colorkey para hacerlo transparente es el (255,0,255) pero el color que resultante es (248,0,248) cargandose la transparencia por colorkey y el resto de colores también están sutilmente cambiados...
Si no convierto la imagen cargada con SDL_DisplayFormat funciona todo correctamente..
A que podría ser debido esto?? El código no parece tener nada raro.. xD
SDL_SetColorKey(image,SDL_SRCCOLORKEY|SDL_RLEACCEL,SDL_MapRGB(image->format,colorkey_r,colorkey_g,colorkey_b));
temp_graph=SDL_DisplayFormat(image);
SDL_FreeSurface(image);
image=temp_graph;
Podría simplemente eliminar la conversión al formato de pantalla para el modo de 32 bits.. pero la verdad es que me intriga por que pasa esto.. xd
Prueba con http://www.libsdl.org/cgi/docwiki.cgi/SDL_5fConvertSurface
Cita de: "Martinez"Prueba con http://www.libsdl.org/cgi/docwiki.cgi/SDL_5fConvertSurface
Ya lo había probado antes, olvidé mencionarlo XD
Creo que el problema está en las variables colorkey_r,_g y _b, que las declaro como int y deberían ser Uint8... lo confirmo cuando pueda que ahora no estoy en mi pc..
Edito: Nada, sigo con lo mismo...