here should be something simple to swap the images at different sizes of the screen, or you could find a way to tell SFML not to do any scaling blur, and to get the nearest pixel(does sfml have a function liek that?), or you could write your own, its easy when scaling down to write the function, your basically getting the float of your x/y index of the scaled pixel, dividing it by your scale, and multiplying it by your unscaled image, then rounding it down, and where that pixel land on the old image is your color
C++ code to swap images at different sizes of window:
// to initialize
// wrote this code in the reply box without testing, so you might have to debug some stupid stuff :-)
bool HighRes;
sf::Sprite ResSprite;
if ((sf::RenderWindow here).GetWidth() > 600){
ResSprite = sf::Sprite(BigImage,...Stuff Here);
HighRes = true;
}else{
ResSprite = sf::Sprite(SmallImage,...Stuff Here);
HighRes = false;
}
// to change, if the resolution is not what it should be
// remove the extra parameters if you don't need them, as they waste CPU
if (((sf::RenderWindow here).GetWidth() > 600) && (!HighRes)){
ResSprite = sf::Sprite(BigImage,ResSprite.GetPosition(),ResSprite.GetScale(),ResSprite.GetRotation());
}else if (HighRes){
ResSprite = sf::Sprite(SmallImage,ResSprite.GetPosition(),ResSprite.GetScale(),ResSprite.GetRotation());
}