Bonjour à tous,
Avant de commencer, oui je sais qu'il existe déjà des topics posant une question équivalente, mais après beaucoup de recherches, je n'ai trouvé aucune "vraie" solution à mon problème
J'aimerais avoir toujours un ratio 16/9 à la vue de ma fenêtre (quelles que soient ses dimensions), cela grâce aux viewport, mais c'est un énorme casse-tête
! J'ai cherché très longtemps, sans résultat..
Donc, si le ratio de la fenêtre est différent de 16/9 (très très probable), des bandes noires liées au viewport devraient s'afficher. Bien entendu, la vue s'agrandit en fonction de la taille de la fenêtre.
Voici le plus important de mon code :
#include <SFML/Graphics.hpp>
#include <iostream>
#include <cstdlib>
#include <string>
#include <cmath>
#include "TileMap.h"
//fonctions..
#pragma region variables
sf::RenderWindow fenetre;
sf::View vue;
//sprites etc...
#pragma endregion variables
int main()
{
fenetre.create(sf::VideoMode(1600, 900), "SFML");
fenetre.setPosition(sf::Vector2i(100, 100));
fenetre.setFramerateLimit(60);
vue.setSize(1600, 900);
vue.setCenter(spritePersonnage.getPosition().x, spritePersonnage.getPosition().y);
//autres définitions de sprites etc..
while(fenetre.isOpen())
{
sf::Event event;
while(fenetre.pollEvent(event))
{
if(event.type == sf::Event::Closed)
{
fenetre.close();
}
}
//Autres événements..
if (event.type == sf::Event::Resized)
{
//c'est ici que tout se joue..
}
vue.setCenter(spritePersonnage.getPosition().x, spritePersonnage.getPosition().y);
fenetre.clear(sf::Color::Black);
fenetre.draw(map);
fenetre.draw(spritePersonnage);
fenetre.setView(vue);
fenetre.display();
}
return 0;
}
//fonctions...
Aussi : mon code est dégoutant, je sais, mais je suis en phase d'apprentissage, j'expérimente
Merci de votre aide !
tidann