Siema.
Jeżeli chcesz osiągnąć efekt taki jak dałeś w komentarzu to mogę dać Ci pomysł.
1. Na początek przygotuj sobie grafikę tła w kilku rozdzielczościach. Wklep sobie taki kod:
// Display the list of all the video modes available for fullscreen
std::vector<sf::VideoMode> modes = sf::VideoMode::getFullscreenModes();
for (std::size_t i = 0; i < modes.size(); ++i)
{
sf::VideoMode mode = modes[i];
std::cout << "Mode #" << i << ": "
<< mode.width << "x" << mode.height << " - "
<< mode.bitsPerPixel << " bpp" << std::endl;
}
A w konsoli wypisze Ci możliwe rozdzielczości SFMLa, przygotuj te kilka grafik, nie muszą być wszystkie, ale te najpopularniejsze.
2. W zależności od ilości grafik które przygotowałeś zrób sobie tablicę textur (sf::Textures backgrouds[ilosc]);
3. Przyda się także wskaźnik na teksturę: (sf::Textures *currentBg)
4. Sprawdź w jakiej rozdzielczości ktoś włącza grę i nadaj wskaźnikowi odpowiednią teksturę (currentBg = &backgrounds[k])
5. Ustaw teskturze pozycje 0, 0
6. Przed każdym rysowaniem tekstury ustaw jej pozycję na:
vector2f(view.getCenter().x - (szerokoscOkna / 2), view.getCenter().y - (wysokoscOkna / 2));
//oczywiscie view to nazwa Twojego obiektu klasy sf::View, a szerokość okna możesz zamienić na szerokość i wysokość tekstury jeśli nie pominąłeś punktów 1 i 2
Problem pojawi się przy zoomie, ale na początek powinien Ci wystarczyć, jeśli będziesz używał zooma, to wtedy Twoja wiedza pozwoli Ci na wymyślenie efektywniejszego sposobu.
Możesz pominąć punkty 1 - 3 jeśli gra będzie odpalana w jednej rozdzielczości.
Pozdrawiam! :)