|
|
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Member functions | ||||
(C++20)(C++20) | ||||
time_point::min | ||||
| Non-member functions | ||||
(until C++20)(C++20) | ||||
(C++17) | ||||
(C++17) | ||||
(C++17) | ||||
| Helper classes | ||||
staticconstexpr time_point min(); | (until C++20) | |
staticconstexpr time_point min()noexcept; | (since C++20) | |
Returns atime_point with the smallest possible duration, i.e.time_point(duration::min()).
(none)
The smallest possibletime_point.
#include <chrono>#include <iomanip>#include <iostream>#include <ratio>#include <string> constexprauto steady_min= std::chrono::steady_clock::time_point::min(); void animate_frame_at_time_offset(double game_time){std::cout<<std::string(static_cast<int>(game_time)%10+1,'*')<<'\n';} int main(){auto last_frame= steady_min;std::chrono::duration<double,std::micro> game_time{0.0}; for(int n=0; n<5;++n){constauto current_frame=std::chrono::steady_clock::now();// initialize timer if first frame ever:if(last_frame== steady_min) last_frame= current_frame; game_time+= current_frame- last_frame;std::cout<<"Drawing frame at "<<std::setprecision(10)<<std::setw(8)<< game_time.count()<<" μs "; animate_frame_at_time_offset(game_time.count());}}
Possible output:
Drawing frame at 0 μs *Drawing frame at 134.499 μs *****Drawing frame at 274.337 μs *****Drawing frame at 416.571 μs *******Drawing frame at 561.124 μs **