Quelle est la manière habituelle de contrôler le taux de trame?
Je suis nouveau graphisme, donc je ne sais pas comment les gens généralement de contrôler le taux de trame pour le rendu des choses.
Je veux dire, comment pouvez-vous définir vous demande de rendre à, disons, 30 fps?
Il y a probablement beaucoup d'Api, qui offre une telle chose, mais j'ai besoin de code à partir de zéro.
source d'informationauteur hstefan | 2011-04-01
Vous devez vous connecter pour publier un commentaire.
Il y a deux "habituel" des moyens de "contrôle" framerate, et il n'est ni tout à fait aussi simple que cela.
Le premier et le plus grand contrôle des deux, et quelque chose qui est généralement facultative, est VSync. Cette forces de la carte vidéo pour pousser une nouvelle image lorsque le moniteur est en fait rafraîchissant. De nombreux moniteurs de rafraîchissement à 60 Hz, de sorte que vous avez tendance à 60 FPS.
Cela fonctionne assez bien pour cap framerate à taux de rafraîchissement du moniteur, mais quand le framerate descend en dessous de rafraîchissement, il est forcé de le multiple le plus proche. Ainsi, comme le framerate commence à tomber un peu, vous perdez un peu de potentiel, le temps de rendu, parce qu'il est forcé à 60, puis 30, puis 20, etc.
(un peu d'info sur le vsync dans DirectX et OpenGL)
La deuxième méthode, couramment utilisée (avec le vsync éventuellement ajoutée) est de ne pas limiter le framerate. Au lieu de cela, ajustez votre code pour gérer les différences. C'est beaucoup plus souple dans le long terme, et généralement mieux de codage, de l'OMI, et beaucoup plus simple que d'essayer de forcer un particulier FPS comte.
En supposant que vous avez un rendu simple boucle, il se lance à la recherche de quelque chose comme:
Vous voulez regarder la différence de temps/temps passé/delta, et de travailler à partir de là. Permettre le framerate à l'échelle basée sur le matériel et les réglages (il y a trop de variations pour vous de prévoir ou de gérer de la moitié), et faire de votre jeu de travail avec qu'au lieu de la contrôler. Beaucoup plus facile pour vous et plus souple et stable dans la pratique.
Typique de la façon de donner un prévisible (si pas constant) taux de trame (avec vidéo ou 3D) est décrit dans la suite de pseudo-code.
Algorithme
Noter la position de la veille de l'opération. Il est pris en sandwich entre la préparation et l'affichage de la même image. C'est la clé principale pour une constante de taux de trame! Vous voulez la préparation du cadre de compter dans le total de la tranche de temps pour l'affichage de l'image.
Il y a un certain nombre de variantes sur la façon de mettre en œuvre chacune de ces étapes (choix de la veille de l'opération sur la base de sa résolution, la fiabilité, etc.), mais l'essentiel est là.
Conseils pour une plus grande fiabilité
Le 1er est facile à mettre en œuvre et peut être caché dans une fonction d'assistance. Le 2ème est un peu plus délicat car il vous oblige à tenir des statistiques de la moyenne de la vitesse de rendu, entre autres choses. Le 3e est difficile à mettre en œuvre comme il est souvent difficile de prédire combien de temps à des tâches différentes à prendre. C'est seulement généralement mis en œuvre dans les systèmes temps réel à contraintes fortes.