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

隨筆 - 5, 文章 - 0, 評論 - 24, 引用 - 0
數(shù)據(jù)加載中……

Ogre在游戲開發(fā)中逐幀更新

最新的Ogre穩(wěn)定版本是1.6.0RC1[shoggoth],在1.6.0版本中OgreFrameListener.h中的類FrameListener多出了一個叫virtual bool frameRenderingQueued( const FrameEvent& evt ) { return true; }的函數(shù)。這個函數(shù)和virtual bool frameStarted( const FrameEvent& evt ) { return true; }有明顯的區(qū)別。
在源代碼中對frameStarted的注釋是:
        /** Called when a frame is about to begin rendering.
  @remarks
   This event happens before any render targets have begun updating.
            @return
                True to go ahead, false to abort rendering and drop
                out of the rendering loop.
        */
大體翻譯是:
當一幀將要開始渲染的時候被調用。
這個事件發(fā)生在所有渲染目標已經(jīng)開始更新之前。
而在源代碼中對frameRenderingQueued的注釋是:
  /** Called after all render targets have had their rendering commands
   issued, but before render windows have been asked to flip their
   buffers over.
  @remarks
   The usefulness of this event comes from the fact that rendering
   commands are queued for the GPU to process. These can take a little
   while to finish, and so while that is happening the CPU can be doing
   useful things. Once the request to 'flip buffers' happens, the thread
   requesting it will block until the GPU is ready, which can waste CPU
   cycles. Therefore, it is often a good idea to use this callback to
   perform per-frame processing. Of course because the frame's rendering
   commands have already been issued, any changes you make will only
   take effect from the next frame, but in most cases that's not noticeable.
  @return
   True to continue rendering, false to drop out of the rendering loop.
  */
翻譯為:
在所有渲染目標已經(jīng)傳出他們的渲染命令之后,并且在渲染窗口被要求去釋放他們的幀之前。
這個事件的用途其實是為了把GPU處理的渲染命令推入隊列,這些只花費一點功夫去完成,
而就這一段時間cpu可以被用來處理一些有用的事情。一旦釋放幀這個時間發(fā)生,這條線程請求將要被
堵塞直到GPU準備好了,這可能浪費了cpu的渲染時間,然而,作為回調函數(shù)去逐幀處理也是一個好注意。
當然因為幀的渲染命令已經(jīng)被放出,任何你做的改變只對下一幀有效,但是大多數(shù)情況下這不是很明顯的。

加入了這個函數(shù)也說明了Ogre1.6.0對gpu重視了。
在ogre自帶的例子中,幾乎都是用examplelistener來處理游戲循環(huán)。這明顯不符合比較大點的游戲開發(fā)。而如果
你想要在大型游戲中應用這個游戲循環(huán)。我感覺首先應該有一個單件的幀監(jiān)聽系統(tǒng)通過游戲主應用程序來初始化。然后就是用設計模式中的Bridge的將聲明和執(zhí)行分開的功能來處理這個方法。
偽代碼:

//一個部件的類
class BrilyfWidgets
{
    
bool frameRenderingQueued( const FrameEvent& evt ); 
    
}
;


//類的前向聲明
class BrilyfApplication;

class BrilyfListenSystem : public Singleton<BrilyfListenSystem>public FrameListener
{
    
bool frameRenderingQueued( const FrameEvent& evt ) 
    
{
        
//一些系統(tǒng)缺省的設置
        
        
//關鍵部分
        BrilyfApplication::getSingletonPtr()->frameRenderQueued( const FrameEvent& evt );
        BrilyfApplication::getSingletonPtr()
->frameEnded( const FrameEvent& evt );
    }

    
bool frameEnded( const FrameEvent& evt );    
}
;

//所有的其他一些部件的初始化都要通過BrilyfApplication,它就是游戲的主管道,控制著所有部件的生命周期,提供了
//frameRenderingQueued和frameEnded的接口供其他的部件來填充。
class BrilyfApplication : public Singleton<BrilyfApplication>
{
    
//一些對于單件初始化的處理
    
    
    
//對應的事件
    bool frameRenderingQueued( const FrameEvent& evt ) 
    

        
for ( int i = 0; i < 16; i++ )
            BrilyfWidgets.frameRenderingQueued(  );
    }

    
bool frameEnded( const FrameEvent& evt );

    BrilyfWidgets mWidgets[
16];
}
;

posted on 2008-09-24 22:11 brilyf 閱讀(2222) 評論(2)  編輯 收藏 引用

評論

# re: Ogre在游戲開發(fā)中逐幀更新  回復  更多評論   

這是開了兩個線程嗎?
一個做DP和flip
另一個回調frameRenderingQueued
2008-09-25 08:49 | LOGOS

# re: Ogre在游戲開發(fā)中逐幀更新  回復  更多評論   

呵呵,ogre系統(tǒng)好象是這樣的.
2008-09-25 10:35 | brilyf
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            欧美三级视频| 中文欧美在线视频| 日韩写真视频在线观看| 亚洲欧洲三级| 一本色道88久久加勒比精品| aa成人免费视频| 亚洲午夜91| 久久精品伊人| 亚洲电影av在线| 亚洲国产一区二区在线| 一本色道久久综合亚洲精品婷婷| 六月婷婷久久| 欧美紧缚bdsm在线视频| 国产精品99免费看 | 99精品视频免费观看| 国产精品色午夜在线观看| 国产视频一区在线| 亚洲国语精品自产拍在线观看| 久久精品国产99| 久久手机精品视频| 欧美日韩日本视频| 永久免费精品影视网站| 亚洲精品综合| 久久国产精品一区二区| 亚洲人成7777| 久久精品一区蜜桃臀影院| 欧美日韩一二三四五区| 在线观看欧美激情| 久久精品视频在线观看| 欧美激情一区二区在线 | 欧美日韩天天操| 国产欧美日韩91| 亚洲欧洲在线一区| 午夜视频久久久| 亚洲激情成人| 久久人人九九| 国产亚洲综合在线| 午夜精品久久| 日韩视频免费大全中文字幕| 久久久久久久波多野高潮日日| 亚洲欧美日韩一区| 欧美成人免费观看| 国产综合av| 久久国产日本精品| 亚洲一区欧美| 国产精品综合av一区二区国产馆| 国产精品国产三级国产专播精品人 | 国产精品一区二区久久久| 亚洲视频播放| 久久精品二区三区| 国产欧美日本一区视频| 国产精品久久久久久久久久ktv| 欧美日韩免费高清| 91久久精品国产91久久| 奶水喷射视频一区| 久久亚洲美女| 亚洲国产日韩综合一区| 六月丁香综合| 蜜臀av一级做a爰片久久| 国产最新精品精品你懂的| 久久精品视频免费观看| 午夜精品在线| 国产一区91| 久久综合狠狠综合久久综合88 | 午夜欧美视频| 夜夜嗨av色综合久久久综合网| 这里只有精品视频| 欧美午夜精品久久久久久浪潮 | 免费日韩av| 亚洲第一色中文字幕| 欧美jjzz| 欧美乱妇高清无乱码| 亚洲精品国产无天堂网2021| 久久黄色级2电影| 久久综合综合久久综合| 亚洲欧洲精品一区二区三区不卡 | 亚洲一区在线观看免费观看电影高清| 亚洲日本在线观看| 亚洲高清激情| 国产精品www色诱视频| 欧美在线免费观看| 暖暖成人免费视频| 午夜精品999| 久久精品一区二区三区不卡| 亚洲国产日韩一级| 亚洲午夜激情在线| 在线观看一区视频| 一本到12不卡视频在线dvd| 国产精品久久毛片a| 美女国产一区| 国产精品日韩高清| 亚洲第一综合天堂另类专| 欧美四级剧情无删版影片| 久久久久久久精| 欧美日韩国产小视频| 久久精品理论片| 欧美久久视频| 免费在线欧美黄色| 国产精品视频免费| 亚洲人成亚洲人成在线观看图片| 乱人伦精品视频在线观看| 亚洲一区国产视频| 老司机午夜精品视频| 午夜精品久久久久久久| 麻豆国产精品va在线观看不卡| 国产精品xxx在线观看www| 久久综合给合久久狠狠色| 欧美性猛片xxxx免费看久爱| 欧美成人免费视频| 韩国亚洲精品| 亚洲综合色激情五月| 一本一本a久久| 免费在线亚洲| 欧美v日韩v国产v| 国产一区二区电影在线观看| 日韩一级在线观看| 亚洲国产精品女人久久久| 亚洲私人影院在线观看| 日韩视频一区二区| 免费久久99精品国产自| 久久久久久日产精品| 国产欧美一区二区精品仙草咪 | 欧美凹凸一区二区三区视频| 午夜精品久久久久久久| 欧美日韩三级在线| 亚洲国产三级| 亚洲精品网站在线播放gif| 久久高清福利视频| 久久久久国产精品厨房| 欧美视频中文在线看| 日韩视频免费看| 亚洲欧洲精品天堂一级| 99视频精品在线| 久久理论片午夜琪琪电影网| 香蕉久久一区二区不卡无毒影院| 亚洲伊人色欲综合网| 在线视频日韩精品| 欧美日韩一区三区| 亚洲午夜一区| 久久国产主播精品| 国内精品视频666| 久久久精品久久久久| 麻豆9191精品国产| 亚洲精品欧美在线| 欧美日韩国产va另类| 亚洲最新在线视频| 欧美一区二区精品久久911| 国产精品自拍视频| 久久精品首页| 亚洲国产视频直播| 亚洲一区二区三区四区五区午夜| 亚洲欧美在线aaa| 久久国产日本精品| 亚洲国产高清一区二区三区| 欧美国产欧美亚洲国产日韩mv天天看完整 | 久久米奇亚洲| 悠悠资源网亚洲青| 免费在线成人av| 亚洲毛片一区二区| 久久不见久久见免费视频1| 在线免费观看日韩欧美| 欧美日韩免费观看一区=区三区 | 久久字幕精品一区| 亚洲国产99精品国自产| 欧美日韩视频专区在线播放 | 免费不卡视频| 亚洲欧洲日本一区二区三区| 日韩午夜黄色| 国产午夜精品福利| 欧美大片免费观看在线观看网站推荐| 欧美在线高清视频| 亚洲国产精品免费| 国产精品久久久久久亚洲毛片 | 亚洲人www| 国产精品高潮视频| 久久亚洲视频| 亚洲综合电影| 亚洲高清一区二区三区| 午夜精品视频一区| 亚洲免费大片| 一区二区三区在线看| 欧美性大战久久久久| 免费在线成人| 久久九九免费| 亚洲欧美日韩国产精品| 亚洲日本中文字幕区| 蜜臀久久99精品久久久久久9| 国产欧美一区二区精品秋霞影院| 亚洲欧洲一区二区三区| 久久久精品一区二区三区| 亚洲一区二区三区四区五区黄| 日韩一二在线观看| 欧美久久久久久久久久| 午夜精品视频网站| 中国成人黄色视屏| 日韩一级在线观看| 日韩视频免费观看高清在线视频 | 国产精品尤物| 欧美日产国产成人免费图片| 久久gogo国模裸体人体|