• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            專職C++

            不能停止的腳步

              C++博客 :: 首頁 :: 聯系 :: 聚合  :: 管理
              163 Posts :: 7 Stories :: 135 Comments :: 0 Trackbacks

            常用鏈接

            留言簿(28)

            我參與的團隊

            搜索

            •  

            最新評論

            閱讀排行榜

            評論排行榜

            因為項目的原因,需要用游戲引擎HGE,于是分析了一下。

            總結:簡單有效,但也過于簡單了,下面是System_Start的注釋!

            bool CALL HGE_Impl::System_Start()

            {

                MSG    msg;

                POINT  pt;

                RECT   rc;

             

                
            if(!hwnd)  //如果系統沒有初始化

                {

                   _PostError(
            "System_Start: System_Initiate wasn't called");

                   
            return false;

                }

             

                
            if(!procFrameFunc)  //如果幀函數,沒有實現

                { 

                   _PostError(
            "System_Start: No frame function defined");

                   
            return false;

                }

             

                bActive
            =true;  //HGE進入活動狀態

             

                
            for(;;)

                {

                   

                   
            if(!hwndParent) //如果沒有父句柄

                   {

                       
            if (PeekMessage(&msg,NULL,0,0,PM_REMOVE))

                       { 

                          
            if (msg.message == WM_QUIT) break;

                          
            // TranslateMessage(&msg);

                          DispatchMessage(
            &msg);

                          
            continue;

                       }

                   }

                    
            //取光標的位置,這個光標是屏

                   GetCursorPos(
            &pt);

                    
            //取客戶端區域

                   GetClientRect(hwnd, 
            &rc);

                    
            //當光標切換為當前窗口所對應的坐標

                   MapWindowPoints(hwnd, NULL, (LPPOINT)
            &rc, 2);

                    
            //判斷鼠標是否在當前窗口

                   
            if(bCaptured || (PtInRect(&rc, pt) && WindowFromPoint(pt)==hwnd)) bMouseOver=true

                   
            else bMouseOver=false;

                    
            //

                   
            if(bActive || bDontSuspend) 

                    {

                       
            do 

                        { 

                            dt 
            = timeGetTime() - t0; //t0以來經過的毫秒數,要確定要超過ms退出(相當于等待ms)

                        } 

                        
            while(dt < 1);

             

                       
            if( dt >= nFixedDelta ) //如果到了幀的時間

                       {

                          fDeltaTime 
            = dt / 1000.0f;

                          
            if( fDeltaTime > 0.2f ) //如果超過.2秒

                          {

                              
            if(nFixedDelta) fDeltaTime = nFixedDelta/1000.0f;

                              
            else fDeltaTime = 0.01f;

                          }

             

                          fTime 
            += fDeltaTime;  //累計游戲的時間

             

                           t0 
            = timeGetTime();   //當前幀處理的時間

             

                          
            if( t0 - t0fps < 1000) cfps++//小于毫秒時,幀數加

                          
            else //如果超過毫秒時

                            {

                                nFPS 
            = cfps;   //設置當前秒幀計數

                                cfps 
            = 0;      //計數器清

                                t0fps 
            = t0;    //重設計數時間

                            }

             

                            
            if( procFrameFunc() ) break;            //執得幀

                          
            if( procRenderFunc ) procRenderFunc();  //如果有渲染,則執得渲染

                          
            if( hwndParent ) break

                          _ClearQueue();

             

                          
            if(!bWindowed && nHGEFPS == HGEFPS_VSYNC) Sleep(1);

                       }

                       
            else 

                        { 

                            
            if(nFixedDelta && dt+3 < nFixedDelta) Sleep(1); 

                        }

                   }

                   
            else Sleep(1);

                }

                _ClearQueue(); 
            //清除沒有處理的事件

                bActive
            =false;

                
            return true;

            }


            本文來自CSDN博客,轉載請標明出處:http:
            //blog.csdn.net/zdhsoft/archive/2009/04/24/4106748.aspx
            posted on 2009-09-19 23:35 冬瓜 閱讀(2399) 評論(6)  編輯 收藏 引用 所屬分類: 原創HGE

            Feedback

            # re: HGE核心函數注釋 2009-09-20 11:09 99書城
            很不錯啊~支持  回復  更多評論
              

            # re: HGE核心函數注釋 2009-09-20 14:59 forgot
            這是核心嗎?hge的皮毛都沒摸到啊  回復  更多評論
              

            # re: HGE核心函數注釋 2009-09-20 15:23 Kevin Lynx
            應該去分析下graphics.cpp下的圖形渲染部分。  回復  更多評論
              

            # re: HGE核心函數注釋 2009-09-21 15:29 zdhsoft
            這個是HGE的心臟!  回復  更多評論
              

            # re: HGE核心函數注釋[未登錄] 2009-09-22 20:44 dophi
            博主的名字叫“冬瓜” - -,我還以為這是我的博客。  回復  更多評論
              

            # re: HGE核心函數注釋[未登錄] 2010-04-12 15:57 dd
            隨便寫兩下就說了解核心代碼,樓主真了解了HGE嗎?  回復  更多評論
              

            久久综合狠狠色综合伊人| 久久综合狠狠综合久久| 色欲综合久久躁天天躁| 无码国内精品久久综合88| 狼狼综合久久久久综合网| 99久久婷婷国产综合亚洲| 国产视频久久| 久久久久久久免费视频| 久久久久一区二区三区| 久久无码人妻精品一区二区三区 | 欧美精品丝袜久久久中文字幕 | 丰满少妇高潮惨叫久久久| 伊人久久大香线蕉精品| 久久午夜夜伦鲁鲁片免费无码影视| 蜜臀av性久久久久蜜臀aⅴ麻豆| 亚洲天堂久久精品| 国产精品久久久久免费a∨| 久久精品国产一区| 麻豆av久久av盛宴av| 国产精品久久久久AV福利动漫 | 久久国产免费观看精品| 亚洲一区精品伊人久久伊人| 国产精品久久国产精麻豆99网站| 欧美久久久久久精选9999| 久久精品国产亚洲AV无码麻豆 | 久久国产成人| 久久99亚洲网美利坚合众国| 色99久久久久高潮综合影院| 久久久久久亚洲Av无码精品专口| 欧美午夜A∨大片久久| 99久久国产主播综合精品| 日产精品久久久久久久| 亚洲精品美女久久久久99小说| 国产精品99久久精品| 国产亚洲精品久久久久秋霞| 精品无码久久久久久国产| 久久99国产精品99久久| 色综合久久无码中文字幕| 久久久久久免费视频| 美女久久久久久| 久久久久人妻一区精品|