Comment obtenir la durée, int milli et float secondes de <chrono>?
Je suis en train d'utiliser le chrono de la bibliothèque pour les minuteries et les durées.
Je veux être en mesure d'avoir un Duration frameStart;
( à partir de l'app début )
et un Duration frameDelta;
( le temps entre les images )
J'ai besoin d'être en mesure d'obtenir la frameDelta
la durée en millisecondes et en float secondes.
Comment faites-vous cela avec le nouveau c++11 <chrono>
les bibliothèques? J'ai travaillé sur elle et googler ( l'information est rare ). Le code est fortement basé sur un modèle et nécessite des moulages et des choses, je ne peux pas comprendre comment utiliser cette bibliothèque correctement.
- Affecter la durée d'une durée avec un ratio secondes (ou millisecondes) et ensuite appeler
count
sur elle... - auto delta = duration_cast<les secondes> (frameDelta).count(); Comme cela? Il renvoie un long long n'est pas un float.
- si la durée a une résolution plus élevée que le type que vous attribuez ensuite, la mission sera mal formé, pour éviter de perdre de la précision. Vous avez besoin d'utiliser une durée d'une représentation à virgule flottante, ou de l'utilisation
duration_cast
- Oh, alors je l'utilise mal! 🙁
Vous devez vous connecter pour publier un commentaire.
Est-ce que vous cherchez?
qui, pour moi, imprime:
auto
surfs
etd
?auto
serait bien pourd
, comme le résultat de laduration_cast<ms>
estms
. Cependant, pourfs
auto
ne serait pas approprié, parce que le résultat det1-t0
a typehigh_resolution_clock::duration
qui n'est pas nécessairement du même type queduration<float>
. Par exemple, sur mon système, c'estduration<long long, nano>
. Donc, il y a une conversion implicite de l'intégrale basée surnanoseconds
flotter à base deseconds
qui se passe sur cette ligne, uniquement parce que le type de destination est spécifiée avecfsec
.auto fs = std::chrono::duration_cast<fsec>(t1 - t0);
être pédant overkill?duration_cast
retourne toujours des nombres entiers...duration_cast<D>
estD
, siD
est une partie intégrante de base ou à virgule flottante fonction. Exemple de flotter à base de millisecondes: youtube.com/watch?v=P32hvk8b13M&t=28m49sJe ne sais pas ce que "millisecondes et float secondes, mais ce devrait vous donner une idée:
count
comme unfloat
?De prendre une deviner ce que c'est que vous demandez. Je suis en supposant que par ordre de la milliseconde cadre de la minuterie vous êtes à la recherche de quelque chose qui agit comme la suivante,
mais utilise
std::chrono
au lieu de cela,Espère que cette aide.
Dans AAA style à l'aide de la explicitement tapé initialiseur de l'idiome: