• <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++博客 :: 首頁 :: 聯(lián)系 :: 聚合  :: 管理
              163 Posts :: 7 Stories :: 135 Comments :: 0 Trackbacks

            常用鏈接

            留言簿(28)

            我參與的團(tuán)隊

            搜索

            •  

            最新評論

            閱讀排行榜

            評論排行榜

            #

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

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

            bool CALL HGE_Impl::System_Start()

            {

                MSG    msg;

                POINT  pt;

                RECT   rc;

             

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

                {

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

                   
            return false;

                }

             

                
            if(!procFrameFunc)  //如果幀函數(shù),沒有實現(xiàn)

                { 

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

                   
            return false;

                }

             

                bActive
            =true;  //HGE進(jìn)入活動狀態(tài)

             

                
            for(;;)

                {

                   

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

                   {

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

                       { 

                          
            if (msg.message == WM_QUIT) break;

                          
            // TranslateMessage(&msg);

                          DispatchMessage(
            &msg);

                          
            continue;

                       }

                   }

                    
            //取光標(biāo)的位置,這個光標(biāo)是屏

                   GetCursorPos(
            &pt);

                    
            //取客戶端區(qū)域

                   GetClientRect(hwnd, 
            &rc);

                    
            //當(dāng)光標(biāo)切換為當(dāng)前窗口所對應(yīng)的坐標(biāo)

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

                    
            //判斷鼠標(biāo)是否在當(dāng)前窗口

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

                   
            else bMouseOver=false;

                    
            //

                   
            if(bActive || bDontSuspend) 

                    {

                       
            do 

                        { 

                            dt 
            = timeGetTime() - t0; //t0以來經(jīng)過的毫秒數(shù),要確定要超過ms退出(相當(dāng)于等待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();   //當(dāng)前幀處理的時間

             

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

                          
            else //如果超過毫秒時

                            {

                                nFPS 
            = cfps;   //設(shè)置當(dāng)前秒幀計數(shù)

                                cfps 
            = 0;      //計數(shù)器清

                                t0fps 
            = t0;    //重設(shè)計數(shù)時間

                            }

             

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

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

                          
            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博客,轉(zhuǎn)載請標(biāo)明出處:http:
            //blog.csdn.net/zdhsoft/archive/2009/04/24/4106748.aspx
            posted @ 2009-09-19 23:35 冬瓜 閱讀(2414) | 評論 (6)編輯 收藏

                 摘要: 在新發(fā)布的C++Builder 2010中,已經(jīng)帶了boost 1.39,安裝的時候,選上就可以了。
            總的來說,C++ Builder 2010這點是做的不錯的,省了我們?yōu)榱耸褂胋oost,要自己下載,并長時間的編譯所帶來的痛苦。最重要的是,還不一定成功。  閱讀全文
            posted @ 2009-09-01 17:47 冬瓜 閱讀(5759) | 評論 (7)編輯 收藏

                 摘要: 八月下旬,Embarcadero RAD Studio 2010 終于出來了,我下載了,試用了一下。找回了老的控件面板  閱讀全文
            posted @ 2009-08-31 12:11 冬瓜 閱讀(3767) | 評論 (5)編輯 收藏

            僅列出標(biāo)題
            共17頁: First 9 10 11 12 13 14 15 16 17 
            无码任你躁久久久久久老妇App| 欧美久久久久久午夜精品| 亚洲精品WWW久久久久久| 欧美与黑人午夜性猛交久久久| 色99久久久久高潮综合影院 | 婷婷久久香蕉五月综合加勒比| 国产激情久久久久久熟女老人| 久久久久99精品成人片试看| 国产精品xxxx国产喷水亚洲国产精品无码久久一区| 久久91精品久久91综合| 久久精品成人免费国产片小草| 久久精品卫校国产小美女| 久久噜噜电影你懂的| 超级97碰碰碰碰久久久久最新| 久久精品成人免费看| 久久精品中文无码资源站| 久久国产精品国语对白| 久久久久亚洲AV无码麻豆| 人人狠狠综合久久亚洲| 久久九九青青国产精品| 久久成人国产精品免费软件| Xx性欧美肥妇精品久久久久久| 国产成人精品综合久久久久| 久久精品国产一区二区电影| av午夜福利一片免费看久久| 久久婷婷五月综合成人D啪| 久久久久婷婷| 91精品国产综合久久四虎久久无码一级 | 久久亚洲AV成人无码国产| 久久婷婷五月综合色99啪ak| 亚洲乱亚洲乱淫久久| 久久99国产精品一区二区| 伊人久久大香线蕉亚洲| 无码八A片人妻少妇久久| 日本精品一区二区久久久| 国产福利电影一区二区三区久久久久成人精品综合 | 久久成人国产精品一区二区| 99re久久精品国产首页2020| 亚洲国产精品高清久久久| 欧美大香线蕉线伊人久久| 欧美一区二区三区久久综|