Bienvenue, Invité. Merci de vous connecter ou de vous inscrire. Avez-vous oublié d'activer ?

Voir les contributions

Cette section vous permet de consulter les contributions (messages, sujets et fichiers joints) d'un utilisateur. Vous ne pourrez voir que les contributions des zones auxquelles vous avez accès.


Sujets - tidann

Pages: [1]
1
Graphique / Bandes noires et ratio 16/9
« le: Mars 18, 2018, 07:22:12 pm »
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  :o!  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

Pages: [1]