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


时间: 2024-12-13 10:54:35

hge source explor 0x8 timer的相关文章

hge source explor 0xC graphics Ⅲ

这里关于图形模块的内部接口部分 内部调用接口 内部接口主要完成:关于固定流水线的设置:dx的初始化:dx的结束 可以说内部接口已经完成了左右工作,只要进行组合调用即可 _GfxInit() DX的初始化函数 Direct3DCreate8 创建接口 GetAdapterIdentifier 获得设备信息,在这里可以查询设备能够做到什么 PRESENT_PARAMETER 参数的填写 CreateDevice 创建设备 _AdjustWindow 这个函数原来在window模块里已经考虑过,在这里

hge source explor 0x5 input module

Input Module 前面提到输入事件,那么对输入事件分类,分类如下 /* ** HGE Input Event type constants */ #define INPUT_KEYDOWN 1 #define INPUT_KEYUP 2 #define INPUT_MBUTTONDOWN 3 #define INPUT_MBUTTONUP 4 #define INPUT_MOUSEMOVE 5 #define INPUT_MOUSEWHEEL 6 接下来看每个函数 _InputInit

hge source explor 0x4 input module

Input Module hge中的输入并没有用到Direct Input,在window消息构造输入信息. 对于鼠标和键盘,输入信息用一个结构来处理,hge中的信息事件的结构 /* ** HGE Input Event structure */ struct hgeInputEvent { int type; // event type int key; // key code int flags; // event flags int chr; // character code int w

HGE source explor 0x0

本文准备开始HGE游戏引擎的代码阅读,其实我已经阅读完HGE的代码了,这里将准备再重新阅读代码.阅读代码将准备将代码拆开阅读,按每种功能分开来阅读,分别准备如下: 游戏的窗口 对于任意一个程序来说,一个窗口都是必须的,所以游戏的最基本的也是一个窗口.那么我们找到HGE关于游戏窗口的部分,详细了解这部分.(窗口君:我是一切的基础哦.) 游戏的输入信息 对于一个游戏来说,互动也是必须的,既然要互动那玩家的输入必不可少.在这里我们可以看到HGE关于输入的部分,创建输入的事件然后,当然是等处理.(输入君

hge source explor 0xA graphics Ⅰ

Graphics 在这一部分完成初始化DX,并且完成固定流水线,然后在进行渲染. 在这一部分会用到的数据结构和参数有: 参数: D3DPRESENT_PARAMETERS* d3dpp; D3DPRESENT_PARAMETERS d3dppW; D3DPRESENT_PARAMETERS d3dppFS; IDirect3D8* pD3D; IDirect3DDevice8* pD3DDevice; IDirect3DVertexBuffer8* pVB; IDirect3DIndexBuff

hge source explor 0x3 windows module

Windows窗口 在这里继续看窗口相关的函数,前面看到的部分能够生成一个窗口.在hge的代码中,我们可以看到别的函数处理窗口相关的事情,当然不是指的消息处理函数. 在hge中消息处理函数是最主要的函数之一,完成了整个游戏的信息输入. 另外的和窗口相关的函数是 graphics.cpp void HGE_Impl::_AdjustWindow() void HGE_Impl::_Resize(int width, int height) 从函数的名字中可以看到都是处理窗口的变化的函数   实现

hge source explor 0x9 Power &amp; Random &amp; Ini

Power 电源管理部分,会用到的参数为: // Power int nPowerStatus; HMODULE hKrnl32; GetSystemPowerStatusFunc lpfnGetSystemPowerStatus; _InitPowerStatus() 初始化电源信息: LoadLibrary("kernel32.dll") 获得函数GetSystemPowerStatus地址 调用_UpdatePowerStatus void HGE_Impl::_InitPowe

hge source explor 0xB graphics Ⅱ

整个graphics.cpp文件可以分成4个部分:内部接口:纹理相关:渲染对象相关:DX初始化等. Texture & Target 关于纹理的部分: CTextureList struct CTextureList { HTEXTURE tex; int width; int height; CTextureList* next; };   Texture_Create(int width, int height) 创建纹理 D3DXCreateTexture创建一个纹理 HTEXTURE C

hge source explor 0xD graphics Ⅳ

外部接口 这里的接口提供给用户进行固定的步骤:BeginScene:自己的渲染:EndScene. 接下来从教程2的渲染顺序来看函数  Gfx_BeginScene(HTARGET targ) 在渲染前的准备工作 TestCooperativeLevel 测试设备是否可用 如果在窗口模式下要检测BackBufferFormat,并更新BPP _GfxRestore 重设dx 检测顶点缓存:如果顶点缓存为不为0,则还未调用EndScene 在当前渲染对象并非参数中的渲染对象时:设置表面.渲染对象.