SRC: FPS
От: WolfHound  
Дата: 10.11.02 23:40
Оценка:
class C_Fps
{
    enum{FrameCount=64};
    typedef unsigned __int64 UI64;
    UI64 m_pc;
    UI64 m_pf;
    UI64 m_Frames[FrameCount];
    int m_pos;
    UI64 m_LFps;
    double m_Fps;
public:
    C_Fps()
        :m_pos(0)
        ,m_Fps(0)
        ,m_LFps(0)
    {
        QueryPerformanceFrequency((LARGE_INTEGER*)&m_pf);
        QueryPerformanceCounter((LARGE_INTEGER*)&m_pc);
        for(int i=0;i<FrameCount;i++)
            m_Frames[i]=0;
        m_LFps=0;
    };
    void Lock(){}//:-))
    void UnLock()
    {
        QueryPerformanceCounter((LARGE_INTEGER*)&m_pc);
    }
    void Frame()
    {
        UI64 d=m_pc;
        QueryPerformanceCounter((LARGE_INTEGER*)&m_pc);
        d=m_pc-d;
        m_LFps+=d-m_Frames[m_pos];
        m_Frames[m_pos++]=d;
        if(m_pos>=FrameCount)m_pos=0;
        m_Fps=(m_pf*FrameCount)/(double)m_LFps;
    }
    double Fps()
    {
        return m_Fps;
    }
};
... << RSDN@Home 1.0 alpha 12 >>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.