zoukankan      html  css  js  c++  java
  • hge source explor 0x8 timer

    Timer

      时间部分,在hge中提供对于fps的控制,时间的控制等。

      其中会用到的参数有。

    hge_impl.h
        // Timer
        float                fTime;
        float                fDeltaTime;
        DWORD                nFixedDelta;
        int                  nFPS;
        DWORD                t0, t0fps, dt;
        int                  cfps;

      在system.cpp中使用到,用来控制帧率

    if(dt >= nFixedDelta)
                {
                    // fDeltaTime = time step in seconds returned by Timer_GetDelta
    
                    fDeltaTime=dt/1000.0f;
    
                    // Cap too large time steps usually caused by lost focus to avoid jerks
    
                    if(fDeltaTime > 0.2f)
                    {
                        fDeltaTime = nFixedDelta ? nFixedDelta/1000.0f : 0.01f;
                    }
    
                    // Update time counter returned Timer_GetTime
    
                    fTime += fDeltaTime;
    
                    // Store current time for the next frame
                    // and count FPS
    
                    t0=timeGetTime();
                    if(t0-t0fps <= 1000) cfps++;
                    else
                    {
                        nFPS=cfps; cfps=0; t0fps=t0;
                        _UpdatePowerStatus();
                    }
    
                    // Do user's stuff
    
                    if(procFrameFunc()) break;
                    if(procRenderFunc) procRenderFunc();
                    
                    // If if "child mode" - return after processing single frame
    
                    if(hwndParent) break;
    
                    // Clean up input events that were generated by
                    // WindowProc and weren't handled by user's code
    
                    _ClearQueue();
    
                    // If we use VSYNC - we could afford a little
                    // sleep to lower CPU usage
    
                    // if(!bWindowed && nHGEFPS==HGEFPS_VSYNC) Sleep(1);
                }
    fps

     Timer_GetTime()

      返回一个游戏已经运行的时间。

    float CALL GEImpl::Timer_GetTime()
    {
        return fTime;
    } 

     Timer_GetDelta()

      返回时间间隔。

    float CALL GEImpl::Timer_GetDelta()
    {
        return fDeltaTime;
    } 

     Timer_GetFPS()

      返回fps。

    int CALL GEImpl::Timer_GetFPS()
    {
        return nFPS;
    } 

  • 相关阅读:
    关于这个 blog
    P6499 [COCI2016-2017#2] Burza 题解
    CF1172F Nauuo and Bug 题解
    CF1479D Odd Mineral Resource 题解
    CF1442E Black, White and Grey Tree 题解
    CF1442D Sum 题解
    CF1025D Recovering BST 题解
    CF1056E Check Transcription 题解
    CF1025F Disjoint Triangles 题解
    红包算法的PHP实现
  • 原文地址:https://www.cnblogs.com/yoru/p/5515331.html
Copyright © 2011-2022 走看看