Forum de la communauté SFML

Aide => Graphique => Discussion démarrée par: nicooomg le Janvier 10, 2013, 12:57:13 am

Titre: [Résolu] [SFML2] sf::View qui redimensionne un sf::Sprite
Posté par: nicooomg le Janvier 10, 2013, 12:57:13 am
Bonjour :)

J'ai un problème en utilisant une view.

Voici le code, lorsque je charge ma texture de fond, je configure ma view:

        if(load_map_order>=0)
        {
            // chargement de la map

            m_game.getRenderer().mapView().setSize(800, 600-getToolboxHeight());
            m_game.getRenderer().mapView().setCenter(400, (600-getToolboxHeight())/2);
            load_map_order = -1;
        }

Et bien sur, l'affichage:
        if(m_game.getRenderer().hasMapTexture())
        {
           /// mise à jour de la vue, pour le scrolling, la fonction n'appelle que sf::View::move
            m_game.getRenderer().updateViews({0, 0, 0, getToolboxHeight()/2});
          /// on prend la vue pour le scrolling
            App.setView(m_game.getRenderer().mapView());
          /// dessine la map
            App.draw(m_game.getRenderer().mapSprite());
          /// vue normale !
            App.setView(App.getDefaultView());
        }


Le problème, c'est que.. voici un screenshot en fichier joint!

Quel est le problème ?

Merci d'avance,

nico


[attachment deleted by admin]
Titre: Re : [SFML2] sf::View qui redimensionne un sf::Sprite
Posté par: Laurent le Janvier 10, 2013, 07:46:01 am
Si ta vue affiche une portion plus petite de la scène, mais toujours dans la même zone de la fenêtre, forcément ce qui est affiché va être étiré. Si tu veux limiter la zone d'affichage également, il faut jouer avec le viewport.
Titre: Re : [SFML2] sf::View qui redimensionne un sf::Sprite
Posté par: nicooomg le Janvier 10, 2013, 09:49:13 am
Ah en effet !

Pour obtenir une vue plus petite , en gardant les memes dimensions, si vous avez un rectangle en bas de votre ecran...:

            m_game.getRenderer().mapView().setSize(800, 600-getToolboxHeight());
            m_game.getRenderer().mapView().setCenter(400, (600-getToolboxHeight())/2);
            m_game.getRenderer().mapView().setViewport({0, 0, 1, (600.f-getToolboxHeight())/600.f});

Merci L.G