• <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>

            ACG狂人

            其實(shí)我更愛姐汁...

            備忘隨筆系列1:MFC與OGRE聯(lián)姻注意事項(xiàng)

            細(xì)節(jié)決定那啥來著,一些細(xì)節(jié)雖然不是什么難事,但是一旦卡住總是會(huì)很煩心,需要太多時(shí)間去調(diào)試,耽誤的是寶貴的項(xiàng)目進(jìn)度,所以我將在這里把一些總結(jié)貼出來,愿能給國(guó)內(nèi)的游戲技術(shù)圈同僚們一點(diǎn)小幫助,節(jié)約寶貴的時(shí)間,畢竟總是在網(wǎng)絡(luò)上攝取營(yíng)養(yǎng),算是回報(bào)社會(huì)吧。

            本文記錄最近發(fā)現(xiàn)的一些 MFC 和 OGRE1.7.2版本 聯(lián)姻的注意事項(xiàng):

            問題1:創(chuàng)建Ogre的CView窗口后,無(wú)法截獲鼠標(biāo)點(diǎn)擊和移動(dòng)信息,只能獲取鼠標(biāo)滾輪信息。
            原因及解決方案:傳遞CView窗口句柄時(shí),請(qǐng)一定使用externedWindowHandle的屬性key,切記不要使用parentWindowHandle,因?yàn)閜arentWindowHandle是讓CView成為渲染窗口的父窗口,鼠標(biāo)鍵盤消息都不會(huì)路由到CView上,而是在渲染窗口里被截獲;而externedWindowHandle是讓CView窗口本身成為渲染窗口,所以CView才能正常截獲到輸入消息。

            問題2:當(dāng)解決問題1之后,發(fā)現(xiàn)使用externedWindowHandle繪制出的窗口很小,而使用parentWindowHandle時(shí)則正常
            原因及解決方案:注意繼承CView::OnSize()函數(shù)響應(yīng)WM_SIZE消息,但請(qǐng)切記:千萬(wàn)別在OnSize中調(diào)用Ogre::RenderWindow::resize()函數(shù),這會(huì)導(dǎo)致OnSize()函數(shù)的遞歸回調(diào),因?yàn)镺gre::RenderWindow::resize()函數(shù)中會(huì)調(diào)用AdjustWindow()和SetWindowPos()函數(shù),這會(huì)導(dǎo)致發(fā)送WM_SIZE消息并縮小窗口,從而導(dǎo)致問題的發(fā)生。

            問題3:如何解決窗口重置大小的問題
            解決方案:在OnSize()中不能調(diào)用Ogre::RenderWindow::resize()函數(shù),而應(yīng)該調(diào)用Ogre::RenderWindow::windowMovedOrResized()函數(shù),通知RenderWindow在渲染前重新設(shè)置Viewport的寬高比例。

            問題4:怎樣確保主渲染循環(huán)
            分析:上網(wǎng)看了一些相關(guān)的解決方案,發(fā)現(xiàn)大多使用WM_TIMER消息來維持OGRE的主渲染循環(huán),這應(yīng)該是下下策的方案了吧......當(dāng)然還有其他的實(shí)現(xiàn)方案,譬如開另一個(gè)線程,這個(gè)方法還是可行的,但是總有些不對(duì)味,因?yàn)殇秩久髅鲬?yīng)該在主線程中才是最佳方案。于是我就看了一下MFC閑下來的時(shí)候都干了些什么,最后發(fā)現(xiàn)了以下解決方案,應(yīng)該算是很不錯(cuò)但并不難的解決辦法了,為什么沒見網(wǎng)上有人提供這樣的方案讓我很不理解,窩著藏著也得不到半點(diǎn)好處:
            解決方案:使用空閑回調(diào)。該回調(diào)是需要繼承CWinApp::OnIdle()函數(shù)(好像是叫這個(gè),反正肯定帶Idle這個(gè)單詞),當(dāng)主線程中的消息循環(huán)沒有取到消息時(shí)(調(diào)用PeekMessage()沒有獲取到消息),就會(huì)去調(diào)用這個(gè)函數(shù),于是......就在這個(gè)函數(shù)里調(diào)用繪制一幀吧:Ogre::RenderWindow::update(),另外有動(dòng)畫的話還需要調(diào)用Ogre::Root::_fireFrameRenderingQueued(),因?yàn)閯?dòng)畫更新在這里。如果是想讓所有渲染對(duì)象都更新一幀的話,直接調(diào)用Ogre::Root::renderOneFrame()吧。

            解決方案不一定最好,也不一定適合你的情況,但愿能盡微薄之力,也是作為我個(gè)人的備忘吧。

            posted on 2010-12-23 01:39 釀妹汁 閱讀(2647) 評(píng)論(6)  編輯 收藏 引用 所屬分類: C++備忘

            評(píng)論

            # re: 備忘隨筆系列1:MFC與OGRE聯(lián)姻注意事項(xiàng)[未登錄] 2010-12-23 10:37 yy

            經(jīng)過百余年的借鑒、融合、探索、創(chuàng)造的中國(guó)油畫,在新世紀(jì)更顯現(xiàn)出融入中華民族血液的自覺意識(shí),人文精神的高揚(yáng)及對(duì)現(xiàn)實(shí)的關(guān)懷,題材內(nèi)容、形式風(fēng)格和手法的多樣化成為當(dāng)代油畫家的重要特征。此信息由
            西安人才網(wǎng):http://www.xa198.com
            中國(guó)畫廊網(wǎng):http://www.hl198.com
            中國(guó)畫家網(wǎng):http://www.rc900.com
            提供!
            近日,“今日之神話——龐茂琨個(gè)展”在上海美術(shù)館開幕。2009-2010年創(chuàng)作的近20幅油畫作品,以及60幅這些油畫創(chuàng)作的部分草圖、手稿等,構(gòu)成了被譽(yù)為“天才學(xué)院畫家”的龐茂琨在內(nèi)地的首次大型個(gè)展。  回復(fù)  更多評(píng)論   

            # re: 備忘隨筆系列1:MFC與OGRE聯(lián)姻注意事項(xiàng) 2010-12-23 17:05 陳梓瀚(vczh)

            我覺得renderwindow.resize沒有調(diào)用renderwindow.windowmovedorresized就是個(gè)bug啊  回復(fù)  更多評(píng)論   

            # re: 備忘隨筆系列1:MFC與OGRE聯(lián)姻注意事項(xiàng) 2010-12-23 22:54 釀妹汁

            @陳梓瀚(vczh)
            有時(shí)候方法分開會(huì)靈活一些吧......嘛...都是一些小細(xì)節(jié)  回復(fù)  更多評(píng)論   

            # re: 備忘隨筆系列1:MFC與OGRE聯(lián)姻注意事項(xiàng) 2010-12-25 01:38 陳梓瀚(vczh)

            @釀妹汁
            類要【公開狀態(tài)】【隱藏實(shí)現(xiàn)】【保持操作前后狀態(tài)的完整性】啊  回復(fù)  更多評(píng)論   

            # re: 備忘隨筆系列1:MFC與OGRE聯(lián)姻注意事項(xiàng) 2010-12-25 14:25 釀妹汁

            @陳梓瀚(vczh)
            嗯哪,有時(shí)候項(xiàng)目大了就有可能無(wú)法完全達(dá)到理想設(shè)計(jì),很多設(shè)計(jì)理念也都是架構(gòu)師們追求的終極目標(biāo),并非是任何情況下都能夠完全達(dá)到的。  回復(fù)  更多評(píng)論   

            # re: 備忘隨筆系列1:MFC與OGRE聯(lián)姻注意事項(xiàng) 2011-03-30 11:45 chen

            CWinApp::OnIdle()函數(shù),有人提及,但繪制幀速率不穩(wěn)定。因?yàn)镸FC內(nèi)部不應(yīng)該使用peekmessage,而是用postmessage。  回復(fù)  更多評(píng)論   

            中文字幕无码久久人妻| 免费观看久久精彩视频| 欧美日韩精品久久久免费观看| 久久久久无码精品| 国产一级做a爰片久久毛片| 亚洲国产精品成人久久蜜臀 | 囯产极品美女高潮无套久久久| 久久亚洲AV成人无码电影| 久久99精品久久久久久不卡| 久久精品人人做人人爽97| 武侠古典久久婷婷狼人伊人| 一本色综合网久久| 久久国产成人| 久久久久成人精品无码中文字幕 | 日韩欧美亚洲综合久久影院Ds| 亚洲午夜久久久影院伊人| 国产精品99久久久久久猫咪| 99国产欧美精品久久久蜜芽| 一本一本久久A久久综合精品| 久久久青草青青亚洲国产免观| 久久人妻AV中文字幕| 99久久精品免费看国产一区二区三区| 99久久久精品| 久久精品aⅴ无码中文字字幕重口| 香蕉99久久国产综合精品宅男自 | 青青热久久综合网伊人| 中文字幕热久久久久久久| 无码8090精品久久一区| 国产精品日韩欧美久久综合| 国产精品久久99| 久久久久久久尹人综合网亚洲 | 精品久久久久久久久久中文字幕| 丰满少妇人妻久久久久久| 久久久青草久久久青草| 国产精品一区二区久久国产| 久久综合亚洲欧美成人| 久久久久99精品成人片直播| 久久精品国产亚洲AV麻豆网站| 久久99精品久久只有精品| 久久99精品久久久久久久久久 | 亚洲&#228;v永久无码精品天堂久久 |