C++ からの新しいものをチェックすると、 std::chrono ライブラリが見つかりました。
std::chrono::high_resolution_clock が SDL_GetTicks の代わりになるかどうか疑問に思っていますか?
を使用する利点はstd::chrono::high_resolution_clock
、時点と期間を に保存しないようにすることですUint32
。ライブラリには、代わりに使用する必要があるstd::chrono
さまざまな が付属しています。std::chrono::duration
これにより、コードが読みやすくなり、あいまいさがなくなります。
Uint32 t0 = SDL_GetTicks();
// ...
Uint32 t1 = SDL_GetTicks();
// ...
// Is t1 a time point or time duration?
Uint32 d = t1 -t0;
// What units does d have?
対:
using namespace std::chrono;
typedef high_resolution_clock Clock;
Clock::time_point t0 = Clock::now();
// ...
Clock::time_point t1 = Clock::now();
// ...
// Is t1 has type time_point. It can't be mistaken for a time duration.
milliseconds d = t1 - t0;
// d has type milliseconds
ある時点と期間を保持するための型付きシステムには、Uint32
. Int64
代わりにに保存される可能性があることを除いて。ただし、本当に必要な場合はカスタマイズできます。
typedef duration<Uint32, milli> my_millisecond;
の精度は次の方法で検査できますhigh_resolution_clock
。
cout << high_resolution_clock::period::num << '/'
<< high_resolution_clock::period::den << '\n';
SDL_GetTicks はミリ秒を返すので、代わりに std::chrono を使用することは完全に可能ですが、必要な単位変換に注意してください。SDL_GetTicks ほど単純ではないかもしれません。また、出発点は同じではありません。