Tout d'abord, assurez-vous que l'image est dans un petit format de type de fichier comme "PNG". En second lieu, lorsque vous bloquez l'image, assurez-vous de ne pas ajouter la couleur de transparence à l'image d'arrière-plan, car cela ne sert à rien et demande BEAUCOUP de cycles de cpu. Voici un exemple de code que j'ai écrit il y a longtemps comme un wrapper pour le chargement des images
SDL_Surface* altSDL::load_image(std::string filename)
{
SDL_Surface* loadedImage = NULL;
SDL_Surface* optimizedImage = NULL;
loadedImage = IMG_Load(filename.c_str());
if(loadedImage != NULL)
{
optimizedImage = SDL_DisplayFormat(loadedImage);
SDL_FreeSurface(loadedImage);
}
else
{
Failure* fail;
fail = Failure::getInstance();
fail->failLog(filename);
}
if(optimizedImage != NULL)
{
Uint32 colorkey = SDL_MapRGB(optimizedImage->format, 0xFF, 0, 0xFF);
SDL_SetColorKey(optimizedImage, SDL_SRCCOLORKEY, colorkey);
}
return optimizedImage;
}
Dans ce code, vous serez en mesure de passer toutes vos images dans ce à optimiser très en toute transparence, mais dans le cas de fond/grandes images que vous devez vous assurer que ce dernier bloc de code est remplacé par quelque chose de plus le long des lignes de quelque chose comme ceci:
//Added some Sudo code
if(loadedImage != NULL && !isBigImage)
{
optimizedImage = SDL_DisplayFormat(loadedImage);
SDL_FreeSurface(loadedImage);
}
else if(!isBigImage)
{
Failure* fail;
fail = Failure::getInstance();
fail->failLog(filename);
}
le isBigImage est le code sudo i ajouté et est un paramètre passé dans; dans certains cas.Cela rendra toutes vos images optimisées, plus petites (Devrait s'assurer qu'ils sont des fichiers PNG) et le rendra si la transparence est seulement ajouté aux petits fichiers image afin que votre fond ne résout pas votre fps
Ne pas oubliez de [convertir vos surfaces au format d'affichage] (http://www.libsdl.org/docs/html/sdldisplayformat.html), sinon SDL effectuera des conversions en arrière-plan pour * chaque blit *. – genpfault
Je l'ai fait. Mais, blit encore sont gourmands en CPU ... –
@ArnaudG Je sais que c'est assez vieux, mais comment calculez-vous la consommation du processeur? Quel framerate obtenez-vous? – emartel