Forum de la communauté SFML
Aide => Graphique => Discussion démarrée par: baton le Janvier 06, 2013, 10:17:33 pm
-
Bonjour,
J'ai entamé un projet il y a quelque temps qui utilise Opengl et la Sfml pour les évent et le fenêtrage.
Je viens de mettre a jour tout le projet pour qu'il puisse tourner avec la Sfml2. La compilation ne pose pas de problème, dans les menu le jeu fonctionne correctement, mais dans le jeu (la ou toute la scène 3d est affiché) le programme freeze au bout de quelque secondes (qu'importe le nombre d'éléments affiché (même pour 0 éléments)). Si je regarde les processus, Xorg monte en flèche et semble être la cause du freeze. Une foi le freeze arrivé je peu faire echap (pour retourner dans le menu) et retourner dans le jeu, j'ai alors a nouveau quelque secondes de délai avant que ça freeze.
Je suis sous Debian 64bits avec la SFML2 64b et OpenGl 3.2.
A noté que le même code sur un MacBookPro 64bits fonctionne correctement.
Je ne sait pas par ou commencer et repasser en 1.6 ne m'arrangerai pas (la gestion des events de la sourie ne fonctionnais pas en 1.6 sous Mac).
Merci d'avance pour toutes suggestion.
-
Aucune idée. Surtout que si tu fais de l'OpenGL, SFML n'est quasiment pas impliquée.
Si tu pouvais recréer le problème dans un code complet minimal, ça pourrait aider.
-
Merci pour ta réponse,
Par le plus grand des hasard j'ai trouvé la ligne qui provoque le freeze :
sf::Mouse::setPosition(sf::Vector2i(WIDTH/2, HEIGHT/2), App);
Par contre je n'ai aucune idée du pourquoi du comment.
-
Tu utilises quelle révision de SFML 2 ?
-
J'ai télécharger hier cette version :
>> http://www.sfml-dev.org/download-fr.php
>>>> C++ | version 2.0 RC
>>>>>> Linux 64 bits (1.6 MB)
-
Télécharge et compile les dernières sources, ça devrait résoudre ton problème.
-
Hum plus facile a dire qu'a faire :)
Je me renseigne, merci pour l'aide.
-
J'ai re compilé la SFML (merci pour le tuto avec cmake, trés pratique). Mais malheureusement cela n'a pas solutionnée mon problème.
-
Bon, pour ceux que ça intéresse, j'ai résolut le problème.
J'avais lu quelque part que la Sfml2 changeait quelque peu la gestion des events.
Je me suis dit que peut être la fonction sf::Mouse::setPosition était trop appelé (peut être même plus d'un fois par frame). Du coup j'ai simplement mis un booléen qui autorise l'appel a sf::Mouse::setPosition qu'une seul fois par frame (même si plusieurs event sont envoyé).
Le plus drôle c'est que ça corrige le problème!
Merci
-
T'es vraiment sûr que tu utilises bien la version que tu as recompilée ? Parce que je suis absolument certain qu'elle doit résoudre ton problème :-\
-
Je re compilerai ce soir en partant du dépôt git.
Une fois compilée il suffi de remplacer les .so c'est tout? Ou il faut aussi copier les headers?
-
Il faut tout remplacer, en-têtes et bibliothèques. Mais tu devrais faire ça proprement : vire complètement ton ancienne version, puis installe proprement la nouvelle. Ne fais pas de remplacement manuel.
-
Ah? Il existe une autre méthode que la manuel? Un petit lien? :)
Merci pour ton aide.
-
Pour supprimer il faut le faire manuellement, mais pour installer tu fais l'habituel "make install".