4

ゲームの場合、最後のフレームからの経過時間を測定したい。

glutGet(GLUT_ELAPSED_TIME)はそれをしていました。しかし glew を含めた後、コンパイラは glutGet 関数を見つけることができなくなりました (奇妙なことです)。だから私は代替手段が必要です。

私がこれまでに見つけたほとんどのサイトは、ctime でクロックを使用することを提案していますが、その機能はプログラムの CPU 時間のみを測定し、リアルタイムではありません! ctime の時間関数は、秒までしか正確ではありません。少なくともミリ秒の精度が必要です。

C++11が使えます。

4

2 に答える 2

5

C++11より前のC++に高解像度のクロックが組み込まれているとは思いません。C++11 を使用できない場合は、エラーを glut と glew で修正するか、プラットフォームに依存するタイマー関数を使用する必要があります。

#include <chrono>
class Timer {
public:
    Timer() {
        reset();
    }
    void reset() {
        m_timestamp = std::chrono::high_resolution_clock::now();
    }
    float diff() {
        std::chrono::duration<float> fs = std::chrono::high_resolution_clock::now() - m_timestamp;
        return fs.count();
    }
private:
    std::chrono::high_resolution_clock::time_point m_timestamp;
};
于 2013-07-15T23:09:03.973 に答える