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

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

    這里提出一種“游戲循環(huán)”概念。游戲循環(huán)是將原先程序中的消息循環(huán)加以修改,方法時(shí)判斷其中的內(nèi)容是否有要處理的消息,如果有則進(jìn)行處理,否則按照設(shè)定的時(shí)間間隔來重繪畫面。下面所使用的游戲循環(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è)消息類型的代號(hào)
    while( msg.message!=WM_QUIT )
    
{
        
// 使用PeekMessage()函數(shù)來檢測(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)開始運(yùn)行到目前所經(jīng)過的時(shí)間,單位是百萬(wàn)分之一秒
            
// DWORD GetTickCount();   //取得系統(tǒng)開始到目前經(jīng)過的時(shí)間
            
// 在這里取得時(shí)間的目的主要是可以搭配接下來的判斷式,用來調(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)行繪圖的操作,通過這個(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)來得快,因此使用游戲循環(huán)的可以更精準(zhǔn)地控制程序運(yùn)行速度并提高每秒鐘畫面重繪的次數(shù)。


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


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

PS:如想獲得更多關(guān)于Visual C++游戲開發(fā)的內(nèi)容,可點(diǎn)擊隨筆:《Visual C++游戲編程基礎(chǔ)》學(xué)習(xí)筆記——索引隨筆。

Feedback

# re: 基礎(chǔ)動(dòng)畫顯示——游戲循環(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>
            久久青青草综合| 欧美视频一区二区| 黄色免费成人| 麻豆精品一区二区综合av | 亚洲视频观看| 在线视频你懂得一区| 国产精品入口| 久久综合图片| 欧美国产日韩精品| 亚洲欧美日韩精品久久久久| 欧美一区在线直播| **欧美日韩vr在线| 一区二区日韩精品| 国产在线观看一区| 亚洲欧洲美洲综合色网| 欧美视频在线观看 亚洲欧| 久久国产精品色婷婷| 美女精品在线观看| 亚洲一区在线免费| 久久五月激情| 亚洲欧美成人一区二区三区| 久久久精品国产99久久精品芒果| 亚洲国产欧美一区二区三区同亚洲 | 国产精品99免费看 | 黄色在线成人| 亚洲三级色网| 好吊妞**欧美| 亚洲网址在线| 91久久综合亚洲鲁鲁五月天| 亚洲综合大片69999| 亚洲精品欧洲精品| 欧美一区二区视频网站| 一本久道久久综合中文字幕| 久久激情视频久久| 午夜视频一区二区| 欧美女激情福利| 欧美岛国在线观看| 国产性做久久久久久| 夜夜嗨av一区二区三区网站四季av| 一区二区三区在线视频免费观看| 亚洲精选在线观看| 最新69国产成人精品视频免费| 香蕉久久a毛片| 亚洲视频专区在线| 欧美精品情趣视频| 欧美成人情趣视频| 精东粉嫩av免费一区二区三区| 亚洲一区二区三区中文字幕在线| 日韩午夜黄色| 欧美韩国一区| 亚洲高清不卡av| 亚洲成色最大综合在线| 久久精品夜色噜噜亚洲a∨| 欧美一区二区三区在线看| 欧美视频三区在线播放| 亚洲另类自拍| 久久久久久久91| 国产一区日韩二区欧美三区| 亚洲欧美国产高清va在线播| 亚洲欧美日韩一区二区在线 | 亚洲免费大片| 欧美高清视频一区二区| 亚洲国产视频一区| 亚洲精品美女在线观看| 欧美成人69av| 亚洲国产精品尤物yw在线观看| 亚洲国产精品激情在线观看| 久久婷婷蜜乳一本欲蜜臀| 蜜桃伊人久久| 亚洲日本一区二区三区| 欧美日韩精品欧美日韩精品一| 91久久精品www人人做人人爽| 亚洲美女色禁图| 欧美性猛交99久久久久99按摩 | 欧美国产日产韩国视频| 亚洲国内精品| 欧美日韩免费在线| 亚洲一区二区欧美日韩| 久久精品国产免费| 亚洲欧洲另类| 欧美日韩免费观看一区=区三区| 一区二区免费在线观看| 久久精品国产精品亚洲| 亚洲国产91色在线| 欧美三级视频在线播放| 亚洲欧美日本另类| 免费成人高清视频| 99国产精品久久久久久久久久| 欧美午夜片欧美片在线观看| 欧美一区二区三区日韩| 亚洲第一二三四五区| 亚洲欧美久久| 亚洲东热激情| 国产精品户外野外| 久久亚洲二区| 亚洲尤物视频网| 欧美高清视频一区二区| 亚洲主播在线观看| 在线免费观看一区二区三区| 欧美日韩国产色视频| 久久久久国产精品www | 久久综合色综合88| 一区二区三区高清不卡| 韩日成人在线| 欧美午夜性色大片在线观看| 久久美女艺术照精彩视频福利播放| 亚洲精品资源美女情侣酒店| 久久久xxx| 亚洲视频在线免费观看| 在线播放中文一区| 国产精品视频九色porn| 欧美精品18| 久久乐国产精品| 亚洲综合国产| 亚洲伦理中文字幕| 亚洲二区精品| 麻豆久久精品| 久久久999精品视频| 亚洲综合色网站| av成人免费观看| 在线日韩av| 一本色道久久88综合日韩精品| 国产视频精品va久久久久久| 欧美日本精品一区二区三区| 久久综合九色九九| 欧美一区久久| 亚洲欧美日韩电影| 亚洲一区二区av电影| 日韩香蕉视频| 日韩一级欧洲| 91久久久国产精品| 亚洲高清一区二区三区| 葵司免费一区二区三区四区五区| 久久国产精品99精品国产| 午夜日韩电影| 亚洲欧美一区二区三区在线| 亚洲天堂av电影| 99国内精品| 亚洲私人影院在线观看| 中文日韩在线| 亚洲一区三区电影在线观看| 亚洲视频高清| 亚洲尤物影院| 香港久久久电影| 欧美中文在线视频| 久久精品夜色噜噜亚洲aⅴ| 久久久久综合| 欧美 日韩 国产精品免费观看| 欧美成人资源| 亚洲欧洲一区| 99成人精品| 亚洲专区免费| 久久精品1区| 久久一二三四| 欧美日本精品在线| 国产精品高潮视频| 国产一二三精品| 影音先锋在线一区| 亚洲美女少妇无套啪啪呻吟| 一区二区三区产品免费精品久久75 | 欧美日韩精品一二三区| 欧美亚州一区二区三区 | 禁久久精品乱码| 99精品欧美一区二区蜜桃免费| 亚洲性感激情| 久久人人爽人人| 亚洲欧洲日韩女同| 亚洲欧美日韩国产另类专区| 久久亚洲二区| 欧美网站在线观看| 好吊妞这里只有精品| 亚洲人成网站999久久久综合| 在线亚洲欧美视频| 久久全国免费视频| 亚洲精品中文字幕在线| 欧美一区二区三区在线视频 | 久久国产日本精品| 欧美大片18| 国产视频久久久久久久| 亚洲精品美女久久久久| 欧美亚洲一区二区在线观看| 欧美大片第1页| 亚洲欧美日韩国产中文| 欧美高清在线观看| 国产手机视频精品| 亚洲天堂成人在线视频| 麻豆精品视频在线观看| 亚洲午夜一区二区三区| 麻豆freexxxx性91精品| 国产精品免费一区豆花| 亚洲精品午夜精品| 久久久久久久综合日本| 亚洲免费av观看| 六月丁香综合| 国产综合久久久久影院| 亚洲一区视频| 亚洲毛片在线看| 欧美99在线视频观看| 亚洲综合成人在线| 欧美高清视频在线|