Pages: 1
Bonjour à tous,
Récemment, je suis mis a installer la distribution Ubuntu (Linux) qui entre parenthèse est vraiment très bien mais je ne suis pas ici pour parler Linux mais d'un problème que j'ai rencontré et que j'ai résolu a ma façon. Néanmoins je préfère poster ce topic afin de vérifier si je ne me suis pas trompé.
En compilant un programme Irrlicht très basique (Affichage d'une toute petite scene), je me rend compte que lors de l'exécution du programme en paramètrant la compilation en utilisant EDT_OPENGL, le nombre de FPS est tellement important que l'application rame.
Je m'explique, la méthode driver->getFps() me donne des valeurs dépassant les 2500 FPS.
Certe c'est bien beau tout cela sauf que cela freeze l'affichage.
Je me suis donc dit que le serveur X de Linux était peut être trop sollicité pour pouvoir rafraichir l'affichage de l'application et donc donnait une impression de "freez" .
J'ai eu bon vérifier si les librairies GLX (opengl) était bien installé ainsi que vérifier la version de mon driver NVIDIA mais rien n'y fait cela ne change pas.
Pour corriger le probleme j'ai donc simplement utilisé la methode device->getTimer()->getTime() pour pouvoir limité l'appel au smgr->DrawAll();
pour ce faire j'ai donc indiqué
if(lastTime + 10 < device->getTimer()->getTime() ) // OUI si un temps de 10 milliseconde se sont écoulé entre les deux tours de boucles
{
......
smgr->drawAll();
......
lastTime = device->getTimer()->getTime();
}
en empêchant d’appeler la méthode drawAll a chaque tour de boucle, l'application plafonne le nombre de FPS a une petite centaine et l'application ne "freez" plus
Ma question est donc la suivante :
Sous Windows et les drivers DIRECTX, je n'avais pas ce problème. D'ailleurs même en utilisant OPENGL.
La méthode que j'utilise est-elle bonne ? Avez vous rencontré ce même problème et si oui comment l'avez vous résolu ?
Merci d'avance pour les réponses
a+,
thoced
Hors ligne
j'ai une ati, et les scene basic (exemple 26) je monte a 4000fps, mais je n'est jamais eux de freez, donc je pensse que c'est du au nouveaux server graphique qu'utilise unbutu
http://fr.wikipedia.org/wiki/Wayland
ou alors cela viens des effect spéciaux de gnome (composite), je t'invite a configurer ceci, comme desactive la syncronisation vertical
tout fois je n'utilise pas unbutu mais la slackware il ce peut que je me trompe
xfce+compiz+emerald .....
Hors ligne
Salut j'arrive un peu tard mais oui la méthode est bonne, elle bride l'affichage à 100 FPS. Ce qui est largement suffisant puisqu'au-delà de 30 FPS c'est du gachis ça sollicite le système à fond pour rien.
L'autre méthode c'est de mettre un device->sleep(x ms) après le drawAll().
Hors ligne
Pages: 1