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

  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>
            久久精品一区中文字幕| 亚洲精品美女在线观看播放| 久久黄色级2电影| 久久精品免视看| 午夜精品福利在线| 亚洲影视九九影院在线观看| 亚洲一区二区三区精品动漫| 午夜免费电影一区在线观看| 久久精品国产99国产精品澳门| 久久亚洲国产成人| 欧美母乳在线| 国产亚洲精品久久久久久| 伊人春色精品| 一本色道久久综合一区| 欧美一级网站| 欧美国产成人精品| 99riav久久精品riav| 亚洲在线视频网站| 蜜桃伊人久久| 国产伦精品一区二区三区免费迷| 樱桃国产成人精品视频| 99国产精品久久久久老师| 欧美一站二站| 亚洲激情一区二区三区| 最新热久久免费视频| 羞羞答答国产精品www一本| 欧美激情在线有限公司| 国产欧美日韩综合一区在线播放 | 亚洲综合第一| 欧美高清日韩| 激情欧美日韩| 欧美怡红院视频| 99国产精品| 欧美经典一区二区三区| 尤物精品在线| 久久精品国产77777蜜臀| 91久久久久久久久| 久久男人资源视频| 国产精品日韩| 亚洲一区中文| 国产精品wwwwww| 欧美裸体一区二区三区| 精品999在线播放| 午夜久久资源| 一本不卡影院| 欧美成人免费网| 亚洲第一偷拍| 久久久久9999亚洲精品| 亚洲一区二区成人| 欧美日韩一级黄| 99re66热这里只有精品4| 欧美国产精品久久| 久久综合电影| 亚洲第一福利社区| 欧美大片免费观看在线观看网站推荐| 性色一区二区三区| 国内在线观看一区二区三区| 久久精品国产一区二区三区| 亚洲免费一在线| 国产精品三上| 久久疯狂做爰流白浆xx| 小黄鸭精品aⅴ导航网站入口| 亚洲第一福利在线观看| 理论片一区二区在线| 悠悠资源网亚洲青| 免费视频亚洲| 欧美母乳在线| 午夜一区在线| 欧美在线观看网站| 亚洲高清免费视频| 亚洲精品国产日韩| 国产精品久久二区| 久久免费国产| 欧美大片一区二区三区| 亚洲私拍自拍| 亚洲免费小视频| 在线观看亚洲精品| 最新中文字幕亚洲| 国产精品久久久亚洲一区| 欧美一区中文字幕| 久久综合免费视频影院| 亚洲伦理一区| 午夜精品视频在线| 1024欧美极品| 一本到高清视频免费精品| 国产精品综合色区在线观看| 久久亚洲精选| 欧美精品精品一区| 欧美在线999| 久久综合一区二区三区| 亚洲一区二区三区三| 久久亚洲国产精品一区二区| 欧美麻豆久久久久久中文| 欧美有码在线视频| 欧美激情久久久久久| 亚洲男女自偷自拍| 免费在线日韩av| 亚洲影视九九影院在线观看| 久久久噜噜噜久久狠狠50岁| 在线视频一区二区| 久久一区视频| 欧美一区二视频| 亚洲视频中文| 亚洲日韩成人| 狠狠色狠狠色综合日日五| 亚洲日本一区二区三区| 国产亚洲人成网站在线观看| 亚洲国产另类久久精品| 国产一区二区三区免费观看| 亚洲精品乱码视频| 在线观看一区二区视频| 亚洲一二三区精品| 日韩视频二区| 久久久久久久久岛国免费| 午夜日韩视频| 欧美日韩免费精品| 亚洲国产成人av| 国内精品99| 性高湖久久久久久久久| 制服诱惑一区二区| 欧美片在线观看| 欧美二区在线观看| 在线精品视频免费观看| 欧美一区激情| 久久久精品2019中文字幕神马| 欧美三级在线视频| 日韩一级视频免费观看在线| 亚洲国产高清自拍| 老司机精品福利视频| 91久久精品国产91久久性色tv| 久久精品首页| 巨乳诱惑日韩免费av| 国产亚洲福利社区一区| 午夜视频在线观看一区二区| 午夜精品久久久久久久99樱桃| 欧美日韩网址| 一区二区av在线| 亚洲一区在线直播| 国产精品伦子伦免费视频| 亚洲一区二区三区中文字幕| 亚洲一区二区四区| 国产精品男女猛烈高潮激情 | 欧美人与性禽动交情品| 亚洲国产精品成人| 一片黄亚洲嫩模| 欧美日韩亚洲天堂| 亚洲神马久久| 久久精品99| 一区二区三区在线不卡| 久久免费视频网| 亚洲国产欧洲综合997久久| 亚洲伦理网站| 国产精品婷婷| 久久精品最新地址| 亚洲国产老妈| 午夜精品国产| 在线看片欧美| 欧美日韩视频不卡| 午夜日韩视频| 亚洲第一搞黄网站| 亚洲免费在线播放| 国内精品视频在线播放| 美女视频黄 久久| 国产精品99久久不卡二区| 久久er99精品| 日韩视频免费在线| 国产日韩精品一区二区三区在线| 久久九九免费| 亚欧美中日韩视频| 久久婷婷国产综合尤物精品| 欧美激情乱人伦| 小处雏高清一区二区三区| 国产综合色产在线精品| 欧美精品色综合| 午夜欧美大尺度福利影院在线看| 亚洲国产精品va在线看黑人 | 亚洲综合首页| 国模私拍视频一区| 欧美精品日韩三级| 久久精彩免费视频| 日韩视频永久免费观看| 久久精品亚洲一区二区三区浴池| 亚洲三级电影全部在线观看高清| 欧美三级不卡| 欧美激情黄色片| 久久频这里精品99香蕉| 亚洲一区三区在线观看| 亚洲破处大片| 免费观看不卡av| 欧美在线视频全部完| 亚洲最新合集| 91久久香蕉国产日韩欧美9色| 国产精品激情| 欧美日韩亚洲一区三区| 欧美成人午夜免费视在线看片| 欧美一区二区视频免费观看| 一区二区久久| 亚洲精品一区二区三区av| 欧美大片国产精品| 蜜桃精品久久久久久久免费影院|