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

            月下的博客

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

            常用鏈接

            留言簿(5)

            我參與的團(tuán)隊(duì)

            搜索

            •  

            最新評(píng)論

            • 1.?re: 五年感想
            • 5年一轉(zhuǎn)眼,我已經(jīng)進(jìn)入工作的第9個(gè)年頭了,缺少的是思考,一直安于現(xiàn)狀,也該反思了
            • --liquanhai
            • 2.?re: 五年感想
            • 認(rèn)為是設(shè)計(jì)-》現(xiàn)在轉(zhuǎn)變?yōu)槿?!
            • --linda
            • 3.?re: 五年感想
            • 決定游戲成功的因素
            • --linda
            • 4.?re: 五年感想
            • 果真人會(huì)沉淀是真的
            • --張恒
            • 5.?re: 五年感想
            • 樓主 最近股市大漲
              希望你能再接再厲
              再創(chuàng)輝煌
            • --ccsdu2009

            閱讀排行榜

            評(píng)論排行榜

                 
                   1.script先由ResourceGroupMgr在prepare函數(shù)里根據(jù)不同的后綴名選擇不同的ScriptLoader的派生類來(lái)加載,這里我們就以ScriptCompilerMgr為例。(今天開(kāi)始細(xì)看材質(zhì)加載部分的代碼才發(fā)現(xiàn)ogre的材質(zhì)解析原來(lái)還有兩套,以前的一套是MaterialSerializer,1.6之后默認(rèn)使用的是ScriptCompilerMgr.)
                  2.調(diào)用ScriptCompilerMgr內(nèi)部ScriptCompiler對(duì)象的compile函數(shù),這里其實(shí)也沒(méi)有進(jìn)行實(shí)際分析,只是創(chuàng)建并調(diào)用了分析和編譯的對(duì)象:ScriptLexer,ScriptParser,ScriptCompiler。
                  3.先由ScriptLexer對(duì)文本進(jìn)行分析,創(chuàng)建一個(gè)包含了所有token信息節(jié)點(diǎn)的列表,注意這一步僅僅是將所有材質(zhì)里的詞匯單元提取出來(lái)而已,還沒(méi)有生成CST,乃至AST(當(dāng)然這里的CST和AST都是簡(jiǎn)化的),這里的實(shí)現(xiàn)比較易讀在ScriptLexer::tokenize中對(duì)文本的每個(gè)字符進(jìn)行遍歷,查找token(在ogre里也就是譬如{ } // \  : newline等,當(dāng)然普通的字符肯定也算的),最后生成一個(gè)tokenlist。

                  4. 接下來(lái)將tokenList傳入ScriptParser的parse函數(shù)中,這些token節(jié)點(diǎn)將被根據(jù)標(biāo)記符的關(guān)系,而生成一個(gè)簡(jiǎn)單有父子關(guān)系的分析樹(shù),也就是CST了。到這里你就發(fā)現(xiàn)之前動(dòng)輒就100個(gè)的nodelist已經(jīng)變成了ConcreteNodeList,當(dāng)然這里的node每個(gè)都是一個(gè)樹(shù)了.以最外面的{}為根.當(dāng)然沒(méi)有{}的部分就變成一個(gè)節(jié)點(diǎn)(知道找到{或者別的標(biāo)記符)
                  5.接著,在ScriptCompiler里將之前生成的CST轉(zhuǎn)化為AST(這里的具體轉(zhuǎn)化的代碼我還沒(méi)細(xì)看。。)
                  6.呼,終于要到最后了,根據(jù)每個(gè)AST的類型調(diào)用不同的ScriptTranslator,例如材質(zhì)的話就取得MaterialTranslator來(lái)解釋成最終的material,然后對(duì)其中的每個(gè)AST子節(jié)點(diǎn)再調(diào)用對(duì)應(yīng)的ScriptTranslator,(例如pass就調(diào)用PassTranslator等)把所有的值都設(shè)置好,這樣所有解釋的工作終于完成了。

            呼,的確是個(gè)很漫長(zhǎng)的過(guò)程。。個(gè)人感覺(jué)如果把scriptLexer換成已有的什么文本解釋庫(kù)讀取的速度會(huì)不會(huì)得到很多提升呢?譬如如今比較流行的rapidXml什么的,畢竟個(gè)人覺(jué)得這些專門優(yōu)化文本庫(kù)的性能還是很高的(雖然我得說(shuō)尖括號(hào)啥的的確不是那么易讀~)。當(dāng)然我覺(jué)得ogre這么寫(xiě)的架勢(shì)很可能有想將原來(lái)普通的腳本配置文件提升成ogre專用的腳本語(yǔ)言的趨勢(shì)?(最早只是寫(xiě)了一堆Serializer而已)
            posted on 2011-04-12 22:31 月下圓舞曲 閱讀(1664) 評(píng)論(0)  編輯 收藏 引用 所屬分類: 開(kāi)發(fā)
            99久久99这里只有免费费精品| 亚洲伊人久久大香线蕉苏妲己| 久久综合九色综合97_久久久| 久久久亚洲裙底偷窥综合| 亚洲精品无码专区久久同性男| 久久久久无码国产精品不卡| 亚洲精品久久久www| 麻豆av久久av盛宴av| 777午夜精品久久av蜜臀| 日本久久久久亚洲中字幕| 丰满少妇人妻久久久久久| 久久精品这里热有精品| 精品久久综合1区2区3区激情| 久久国产香蕉一区精品| 午夜视频久久久久一区 | 99久久亚洲综合精品成人| 久久精品国产久精国产思思| 亚洲精品乱码久久久久久久久久久久 | 精品久久久久久久无码| 久久久久久国产精品免费无码 | 日本一区精品久久久久影院| 国产综合精品久久亚洲| 中文字幕无码久久久| 无码久久精品国产亚洲Av影片| 久久久久人妻一区精品性色av| 精品精品国产自在久久高清 | 色老头网站久久网| MM131亚洲国产美女久久| 国产国产成人久久精品| 伊人久久综合成人网| 国产成人无码精品久久久久免费| 久久久高清免费视频| www久久久天天com| 精品久久久久久无码不卡| 2020久久精品国产免费| 一级a性色生活片久久无少妇一级婬片免费放| 中文字幕热久久久久久久| 情人伊人久久综合亚洲| 午夜不卡久久精品无码免费| 青青草原综合久久大伊人导航| 国产精品久久久久影视不卡|