2013-08-15 4 views
1

Je suis encore assez nouveau à SFML, et maintenant j'essaye de faire un jeu de base de plan de défilement. J'ai la plupart des choses basiques, mais je commence à remarquer que l'écran a l'air décalé. J'utilise la fonction window.setFrameRateLimit de sorte que le résultat du mouvement soit le même sur tous les ordinateurs, mais qu'il y ait des pics de décalage aléatoires pendant l'exécution du programme. Je pense que c'est en raison de la limite de la fréquence d'images et de la façon dont cela fonctionne. Y a-t-il une autre meilleure façon de faire exécuter le programme uniquement à certains moments? Idéalement, il se déplace également à la même vitesse sur les ordinateurs plus lents.Seulement exécuter sur certaines images dans SFML

Répondre

1

Il semble que les pics de décalage setFrameRateLimit aient été corrigés dans SFML 2.0. Si vous ne pouvez pas passer à SFML 2.0, vous pouvez ajouter votre propre limiteur de fréquence d'images. Cela implique d'ajouter un sleep() à votre boucle de jeu. Par exemple:

while(App.IsOpened()) { 
    float time = Clock.GetElapsedTime(); 

    // update game 
    // draw game 

    float timeToWait = (1.0/FRAMES_PER_SECOND) - (Clock.GetElapsedTime() - time); 
    if(timeToWait > 0) { 
     sleep(timeToWait * 1000); 
    } 
} 
Questions connexes