Forum de la communauté SFML

Aide => Fenêtrage => Discussion démarrée par: mazertys17 le Novembre 04, 2014, 11:21:45 am

Titre: problème avec fullscreen
Posté par: mazertys17 le Novembre 04, 2014, 11:21:45 am
Bonjour.

J'ai un problème avec le sf::Style::Fullscreen: je le lance dans une boucle via un objet affichage.afficher(). Ca fonctionne bien mais, au bout de quelques secondes, il plante.
Voici des extraits de mon code:

int ObjetDexemple::jouer()
{
afficheur.charger();
while (!stopExemple)
{
afficheur.afficher();
}
}

void Affichage::charger()
{

    fenetre.create(sf::VideoMode(1600, 900), "My window", sf::Style::Fullscreen);

    image.loadFromFile("images/fond1.png");
    spriteImage.setTexture(image);

}



void Affichage::afficher()
{

        fenetre.clear(sf::Color::Black);

        fenetre.draw(spriteImage);

        fenetre.display();
}


J'ai la même résolution sur mon bureau que celle demandé en fullscreen, c'est à dire 1600x900. Dans une fenêtre normal, cela fonctionne sans planter.

Merci si vous pouvez m'aider.
Titre: Re : problème avec fullscreen
Posté par: Laurent le Novembre 04, 2014, 12:47:06 pm
Utilise ton debugger, ça sert à ça.

Sinon : http://sscce.org/
Titre: Re : problème avec fullscreen
Posté par: mazertys17 le Novembre 04, 2014, 03:04:09 pm
Bonjour, et merci pour votre réponse.

chose étonnante, lorsque j'utilise le debugger, le programme marche sans planter. Je le lance normalement, et il replante au bout de quelques secondes.

Enfin il plante bizarrement: le programme continue de se dérouler, mais la souris se met en mode sablier, et lorsque j'appuis sur échap, qui fait clore le programme, il ferme et windows m'ouvre la la fenêtre "a cessé de fonctionner". Si j'utilise une commande quelconque, il me clos le programme de la même facon.
Titre: Re : problème avec fullscreen
Posté par: kimci86 le Novembre 04, 2014, 04:58:22 pm
Bonjour,
Citation de: Tutoriels SFML
Une erreur que les gens font souvent est d'oublier de mettre une boucle d'évènements, car ils n'en ont pas besoin (ils utilisent les entrées temps réel à la place, typiquement). Mais sans gestion d'évènement la fenêtre ne sera pas réactive ; en effet, la boucle d'évènement a deux rôles : en plus de fournir les évènements à l'utilisateur, elle permet à la fenêtre de traiter ses évènements internes, ce qui est impératif a son bon fonctionnement.

http://sfml-dev.org/tutorials/2.1/window-window-fr.php#rendre-la-fenetre-un-peu-plus-vivante
Titre: Re : problème avec fullscreen
Posté par: mazertys17 le Novembre 05, 2014, 11:03:00 am
Bonjour, et merci pour votre réponse.

En effet, c'est bien cela: ma boucle vient d'un autre objet qui fait appel a "Affichage" en dernier, celui ci n'ayant donc aucune boucle d’événement, étant appelé en boucle par cet autre objet. J'ai simplement rajouté :
-fenetre.pollEvent(event);
et une condition :
 " if (event.type == sf::Event::Closed){ fenetre.close();}

Depuis, cela semble fonctionner sans problème.

Merci  :D