青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

  C++博客 :: 首頁(yè) :: 聯(lián)系 :: 聚合  :: 管理
  117 Posts :: 2 Stories :: 61 Comments :: 0 Trackbacks

常用鏈接

留言簿(8)

搜索

  •  

最新評(píng)論

閱讀排行榜

評(píng)論排行榜


    定時(shí)器的使用固然很簡(jiǎn)單方便,但是事實(shí)上這樣的方法僅適合用在顯示簡(jiǎn)易動(dòng)畫(huà)及小型的游戲程序中。因而一般而言,游戲本身需要顯示順暢的游戲畫(huà)面,使玩家感覺(jué)不到延遲的狀況,基本上游戲畫(huà)面必須在一秒鐘之內(nèi)更新至少25次以上,這一秒鐘內(nèi)程序還必須進(jìn)行消息的處理和大量數(shù)學(xué)運(yùn)算甚至音效的輸出等操作。而使用定時(shí)器的消息來(lái)驅(qū)動(dòng)這些操作,往往達(dá)不到所要求的標(biāo)準(zhǔn),不然就會(huì)產(chǎn)生畫(huà)面顯示不順暢和游戲響應(yīng)時(shí)間太長(zhǎng)的情況。

    這里提出一種“游戲循環(huán)”概念。游戲循環(huán)是將原先程序中的消息循環(huán)加以修改,方法時(shí)判斷其中的內(nèi)容是否有要處理的消息,如果有則進(jìn)行處理,否則按照設(shè)定的時(shí)間間隔來(lái)重繪畫(huà)面。下面所使用的游戲循環(huán)的程序代碼:

    // 游戲循環(huán)
    
// 當(dāng)收到的msg.message不是窗口結(jié)束消息WM_QUIT,則繼續(xù)運(yùn)行循環(huán)。
    
// 其中msg是一個(gè)MSG的消息結(jié)構(gòu),其結(jié)構(gòu)成員message則是一個(gè)消息類(lèi)型的代號(hào)
    while( msg.message!=WM_QUIT )
    
{
        
// 使用PeekMessage()函數(shù)來(lái)檢測(cè)目前是否有要處理的消息
        
// 若檢測(cè)到消息(包含WM_QUIT消息)則會(huì)返回一個(gè)非“0”的值,否則返回“0”。
        
// 因此在游戲循環(huán)中,若檢測(cè)到消息便進(jìn)行消息的處理,否則運(yùn)行else敘述之后的程序代碼
        
// 注意:PeekMessage()函數(shù)不能用原先消息循環(huán)的條件GetMessage()取代
        
// 因?yàn)镚etMessage()函數(shù)只有在取得WM_QUIT消息時(shí)才會(huì)返回“0”,其他時(shí)候則是返回非“0”或“-1”(發(fā)生錯(cuò)誤時(shí))
        if( PeekMessage( &msg, NULL, 0,0 ,PM_REMOVE) )
        
{
            TranslateMessage( 
&msg );
            DispatchMessage( 
&msg );
        }

        
else
        
{
            
// GetTickCount()函數(shù)會(huì)取得系統(tǒng)開(kāi)始運(yùn)行到目前所經(jīng)過(guò)的時(shí)間,單位是百萬(wàn)分之一秒
            
// DWORD GetTickCount();   //取得系統(tǒng)開(kāi)始到目前經(jīng)過(guò)的時(shí)間
            
// 在這里取得時(shí)間的目的主要是可以搭配接下來(lái)的判斷式,用來(lái)調(diào)整游戲運(yùn)行的速度,
            
// 使得游戲不會(huì)因?yàn)檫\(yùn)行計(jì)算機(jī)速度的不同而跑的太快或太慢
            tNow = GetTickCount();
            
// “tPre”記錄前次繪圖的時(shí)間,而“tNow-tPre”則是計(jì)算上次繪圖到這次循環(huán)運(yùn)行之間
            
// 相差多少時(shí)間。這里設(shè)置為若相差100個(gè)單位時(shí)間以上則再次進(jìn)行繪圖的操作,通過(guò)這個(gè)
            
// 數(shù)值的控制可以調(diào)整游戲運(yùn)行的快慢
            if(tNow-tPre >= 100)
                MyPaint(hdc);
        }

    }
    如果把100改為40,即設(shè)定40個(gè)單位時(shí)間(1微妙),那樣每隔40個(gè)單位進(jìn)行一次繪圖的操作,那么1秒鐘大約重繪窗口1000/40=25此,剛好可以達(dá)到期望值。

    由于循環(huán)的運(yùn)行速度遠(yuǎn)比定時(shí)器發(fā)出時(shí)間信號(hào)來(lái)得快,因此使用游戲循環(huán)的可以更精準(zhǔn)地控制程序運(yùn)行速度并提高每秒鐘畫(huà)面重繪的次數(shù)。


范例ch3_2:使用游戲循環(huán)產(chǎn)生動(dòng)畫(huà)效果,并在窗口左上角顯示每秒畫(huà)面更新次數(shù)。
下載地址:ch3_2(上傳到windows live空間,可能需要MSN賬號(hào)登陸)
說(shuō)明:程序源代碼中有相關(guān)的注釋。
程序運(yùn)行結(jié)果如下圖:


    在這個(gè)范例中設(shè)定畫(huà)面更新的時(shí)間間隔是0.1秒,所以每秒鐘最多會(huì)更新10次畫(huà)面,不過(guò)如果在范例運(yùn)行的同時(shí),運(yùn)行其他程序,那么CPU必須馬上去處理所開(kāi)啟的其他程序,因此可能會(huì)使得每秒畫(huà)面的更新次數(shù)下降。這樣的情形在每秒畫(huà)面更新次數(shù)越高的時(shí)候會(huì)越顯著。

PS:如想獲得更多關(guān)于Visual C++游戲開(kāi)發(fā)的內(nèi)容,可點(diǎn)擊隨筆:《Visual C++游戲編程基礎(chǔ)》學(xué)習(xí)筆記——索引隨筆
posted on 2010-04-09 15:03 煙皚 閱讀(993) 評(píng)論(1)  編輯 收藏 引用 所屬分類(lèi): 《Visual C++游戲編程基礎(chǔ)》學(xué)習(xí)筆記

Feedback

# re: 基礎(chǔ)動(dòng)畫(huà)顯示——游戲循環(huán) 2010-08-16 17:28 sad
是毫秒
不是微秒!  回復(fù)  更多評(píng)論
  

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            亚洲视频1区| 亚洲国产欧美日韩| 99国产精品久久久久久久| 蜜月aⅴ免费一区二区三区| 亚洲欧美怡红院| 国产精品视频你懂的| 亚洲社区在线观看| 浪潮色综合久久天堂| 红桃视频亚洲| 乱中年女人伦av一区二区| 美女国产一区| 亚洲视频一区在线观看| 欧美www视频| 日韩亚洲欧美一区二区三区| 久久久精品久久久久| 在线精品视频一区二区三四| 欧美成va人片在线观看| 欧美精品福利视频| 亚洲在线成人精品| 欧美一区二区视频免费观看| 狠狠色狠狠色综合日日小说| 亚洲女同性videos| 亚洲韩日在线| 美女脱光内衣内裤视频久久影院 | 欧美精品18| 91久久精品视频| 久久亚洲春色中文字幕久久久| 久久成人一区二区| 亚洲精品在线三区| 亚洲欧美日韩视频二区| 欧美一区二区精品久久911| 欧美一区永久视频免费观看| 亚洲精品在线观| 欧美激情性爽国产精品17p| 亚洲国产精品成人va在线观看| 国产精品久久久久久久久动漫| 久久久夜夜夜| 欧美日韩直播| 免费在线看成人av| 亚洲人线精品午夜| 久久精品国产77777蜜臀| 免费成人高清视频| 亚洲清纯自拍| 国产精品白丝av嫩草影院| 亚洲电影一级黄| 国产在线观看精品一区二区三区| 亚洲经典视频在线观看| 日韩一级二级三级| 国产欧美日韩激情| 亚洲人成精品久久久久| 精品二区久久| 久久精品视频在线看| 亚洲成色最大综合在线| 国内精品久久久久久久影视麻豆 | 国产人成一区二区三区影院| 久久精品夜色噜噜亚洲aⅴ| 亚洲国产毛片完整版 | 亚洲欧洲一区二区三区久久| 欧美特黄一区| 久久久噜噜噜久噜久久| 久久久久久久久蜜桃| 国产精品区一区二区三| 久久精品中文| av不卡免费看| 99精品欧美一区二区三区| 国产精品一区二区在线观看网站| 亚洲视频在线看| 亚洲天堂激情| 亚洲二区在线视频| 麻豆av一区二区三区| 一区二区三区免费在线观看| 中文亚洲字幕| 在线看日韩欧美| 国产精品日本一区二区 | 国产精品视频一二三| 久久综合导航| 欧美一区二区日韩一区二区| 日韩一二三在线视频播| 亚洲一级黄色av| 国产精品欧美一区二区三区奶水| 美女精品视频一区| 午夜免费日韩视频| 麻豆免费精品视频| 亚洲欧美日韩视频二区| 国产精品系列在线播放| 欧美极品一区| 免费日韩一区二区| 亚洲精品乱码久久久久久| 久久天堂成人| 欧美在线视频一区二区| 在线成人av网站| 欧美日韩免费在线| 亚洲午夜女主播在线直播| 亚洲青涩在线| 亚洲电影免费观看高清完整版在线 | 99热在线精品观看| 亚洲区中文字幕| 欧美福利在线| 一区二区三区导航| 国产日产欧产精品推荐色| 欧美午夜a级限制福利片| 欧美激情第五页| 亚洲免费在线观看| 亚洲一区日韩在线| 欧美激情国产高清| 亚洲欧美国产高清| 亚洲欧美国产精品专区久久| 亚洲视频在线观看三级| 中文av字幕一区| 亚洲影视在线播放| 午夜视频在线观看一区二区| 尤物99国产成人精品视频| 国产综合亚洲精品一区二| 国产亚洲一区在线播放| 欧美美女bb生活片| 久久久久9999亚洲精品| 久久久777| 美女精品在线| 欧美片第1页综合| 欧美网站大全在线观看| 欧美三级中文字幕在线观看| 欧美午夜无遮挡| 国产精品一区二区男女羞羞无遮挡| 国产精品乱码一区二区三区| 欧美成人精品在线| 欧美日韩成人综合在线一区二区| 久久久久国产免费免费| 欧美mv日韩mv亚洲| 欧美三级乱码| 国产欧美一区二区三区另类精品 | 男人插女人欧美| 91久久精品国产| 亚洲视频一区二区在线观看| 欧美激情一区二区三级高清视频 | 欧美成人精精品一区二区频| 亚洲国产精品久久91精品| 日韩午夜免费| 欧美影片第一页| 欧美国产日韩一区二区| 国产精品你懂的在线| 在线成人av| 亚洲在线成人| 欧美电影免费观看高清完整版| 日韩视频在线观看国产| 欧美一二三区精品| 欧美精品一区二区三区久久久竹菊| 国产精品美女久久| 亚洲激情婷婷| 久久精品一区四区| 亚洲精品在线观看免费| 亚洲黄色影片| 欧美伊人久久久久久久久影院| 欧美成人免费大片| 国产亚洲精品一区二区| 亚洲精选久久| 蜜臀久久99精品久久久久久9| 日韩视频国产视频| 麻豆成人在线| 国产一区二区av| 亚洲小视频在线观看| 欧美国产高清| 欧美一区二区在线播放| 欧美日韩亚洲精品内裤| 91久久精品国产91久久性色| 久久国产精品亚洲va麻豆| 久久国产乱子精品免费女| 亚洲日本电影在线| 久久久久国内| 国内精品伊人久久久久av一坑| 一区二区三区高清在线观看| 欧美大香线蕉线伊人久久国产精品| 亚洲自拍偷拍色片视频| 欧美日韩卡一卡二| 亚洲人成毛片在线播放| 久久亚洲影院| 欧美在线综合视频| 国产区精品在线观看| 午夜亚洲影视| 男女精品视频| 久久成人精品电影| 国产欧美一区二区三区另类精品| 亚洲乱码视频| 亚洲电影第三页| 欧美1区免费| 亚洲精品一区二区三区99| 亚洲永久免费观看| 亚洲精品久久久久久久久| 你懂的视频一区二区| 亚洲高清视频的网址| 欧美成人高清| 欧美3dxxxxhd| 一二三区精品福利视频| 久久精品免费播放| 性伦欧美刺激片在线观看| 国产日韩一区二区三区| 亚洲人成毛片在线播放| 亚洲国产精品一区二区久| 欧美va天堂| a4yy欧美一区二区三区| 一本久久综合亚洲鲁鲁五月天|