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;
    } 

  • 相关阅读:
    【Gitbook】实用配置及插件介绍
    【Git】学习记录
    【Ubuntu】使用记录
    intellij idea
    【应用】信息短时存储
    leetcode pow(x,n)实现
    SSM框架-----------SpringMVC+Spring+Mybatis框架整合详细教程
    《平凡的世界》之我看
    垃圾收集器与内存分配策略(三)
    垃圾收集器与内存分配策略(二)
  • 原文地址:https://www.cnblogs.com/yoru/p/5515331.html
Copyright © 2011-2022 走看看