Forum de la communauté SFML

Aide => Graphique => Discussion démarrée par: roket le Novembre 06, 2012, 01:36:31 pm

Titre: [sf::Image]Bug très étrange
Posté par: roket le Novembre 06, 2012, 01:36:31 pm
Bonjour, je suis confronté à un bug très étrange.
Le code suivant (basique) :
#include <cstdio>
#include <SFML/Graphics.hpp>
#include <SFML/System.hpp>

using namespace std;

int main()
{
  sf::RenderWindow App(sf::VideoMode(800,600), "TEST");
 
  sf::Image imgTest;
  imgTest.LoadFromFile("terrain_04.bmp");
  sf::Sprite sprTest;
  sprTest.SetImage(imgTest);
  sprTest.SetPosition(0.f,0.f);

  while(App.IsOpened())
  {
    sf::Event ev;
    while(App.GetEvent(ev))
    {
      if(ev.Type == sf::Event::Closed)
        App.Close();  
    }

    App.Clear(sf::Color::Red);
    App.Draw(sprTest);
    App.Display();
  }
}

Affiche correctement l'image choisie mais avec une ligne de 1px vide en y=0 et une colonne de 1px vide en x=0, voilà un screen en pièce jointe.

Je vous assure que le pb ne vient pas de l'image (plusieurs tests, comme un GetPixel(0,0)), et de plus si je mets comme position -1,-1 j'obtiens le résultat attendu...
Une idée ? Merci d'avance.


[attachment deleted by admin]
Titre: Re : [sf::Image]Bug très étrange
Posté par: Laurent le Novembre 06, 2012, 01:49:30 pm
Utilise plutôt SFML 2, SFML 1.6 n'est plus du tout maintenue.
Titre: Re : [sf::Image]Bug très étrange
Posté par: roket le Novembre 06, 2012, 01:51:54 pm
D'accord, mais c'est étrange car cela fait longtemps que je l'utilise et je n'avais jamais remarqué ce bug.
Titre: Re : [sf::Image]Bug très étrange
Posté par: Laurent le Novembre 06, 2012, 01:53:57 pm
Est-ce que ça va mieux en ajoutant imgTest.SetSmooth(false) ?
Titre: Re : [sf::Image]Bug très étrange
Posté par: roket le Novembre 06, 2012, 02:02:11 pm
Oui ! c'est parfait, que change cette fonction ?
Titre: Re : [sf::Image]Bug très étrange
Posté par: Laurent le Novembre 06, 2012, 02:04:56 pm
Qu'en dit la doc ? :P
Titre: Re : [sf::Image]Bug très étrange
Posté par: roket le Novembre 06, 2012, 02:08:58 pm
Je me suis mal exprimé, qu'est ce que le smooth filter ? (et en quoi ca influe sur le positionnement)
Bon mais tu vas me dire qu'en dit google!
Merci beaucoup, je vais essayer de me mettre à la 2.0 !
Titre: Re : [sf::Image]Bug très étrange
Posté par: Laurent le Novembre 06, 2012, 02:17:18 pm
Ah oui, il est possible que la doc 1.6 soit beaucoup moins précise que la 2.0. Ne Google pas, tu risques de te perdre, c'est beaucoup trop vague comme terme.

En gros, "smooth" = "lisse". Quand c'est activé, les pixels sont moins visibles et l'image est légèrement plus floue. Ca ne se voit pas forcément sur une image affichée telle quelle, c'est utile surtout lorsque tu commences à redimensionner les sprites. Ca n'a aucune influence sur la position, en fait ton sprite est bien positionné, le seul problème c'est que les pixels du contour étaient "mélangés" avec du transparent, ce qui te donnait l'illusion que tout était décalé.
Titre: Re : [sf::Image]Bug très étrange
Posté par: roket le Novembre 06, 2012, 02:22:25 pm
Merci beaucoup pour cette aide rapide et pour l'explication !