2013年11月15日金曜日

C++11のchronoライブラリで60FPSと30FPSの間のフレーム数変換

元々60FPSだったものを30FPSに作り替えたりする際に,60FPSでNフレームだったのは30FPSだと・・・
とか逆だったりとかをC++11だと,chronoライブラリあるし,使えるかなぁ,と思って試してみた.

#include <iostream>
#include <ratio>
#include <chrono>
#include <cstdint>

using namespace std;
using namespace std::chrono;

int main()
{
    typedef duration<int32_t, ratio<1, 60>> fps60_t;
    typedef duration<int32_t, ratio<1, 30>> fps30_t;

    // 60FPS -> 30FPS
    fps60_t fps60(10);
    fps30_t fps30 = duration_cast<fps30_t>(fps60);

    cout << fps30.count() << endl;

    // 30FPS -> 60FPS
    fps30 = decltype(fps30)(10);
    fps60 = duration_cast<decltype(fps30)>(fps30);

    cout << fps60.count() << endl;
}

下手に暗黙的な変換にしてしまうのは良くないのは分かってるんだけど,
もうちょい暗黙的な変換欲しいなぁ,と言う気が.

0 件のコメント:

コメントを投稿