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

            牽著老婆滿街逛

            嚴(yán)以律己,寬以待人. 三思而后行.
            GMail/GTalk: yanglinbo#google.com;
            MSN/Email: tx7do#yahoo.com.cn;
            QQ: 3 0 3 3 9 6 9 2 0 .

            Ogre1.4.x的Overlay顯示中文的方法

            Ogre1.4.x是支持中文的,不過(guò)因?yàn)楣臼褂玫氖枪爬系陌姹荆砸恢背丝丛创a,也沒有怎么去使用過(guò)它。很明顯的,從1.4開始就加入了UTFString這個(gè)東西,這就意味著了可以支持多字節(jié)字符了。而且Font類也改變了很多。
            雖然說(shuō)Ogre是使用FreeType支持TTF的,但是最終Ogre還是將之轉(zhuǎn)換成紋理的,所以我今天試了一下,使用了中文字體之后,啟動(dòng)速度真是慢的可以……code_point的區(qū)域至少包含了兩萬(wàn)個(gè)字符。如此還不如做成點(diǎn)陣字庫(kù)的好。

            OK,下面開始工作!

            第一步,準(zhǔn)備好字體,隨便什么字體都可以,只要是中文字體。從Windows/Fonts里面拷一個(gè)吧!我用的是雅黑字體,很漂亮的。把字體放到任何Ogre可以搜索到資源的地方,一般都在Media/font里面,就丟里面吧!pack/OgreCore.zip里面也有三個(gè)字體的,扔里面也是不錯(cuò)的選擇。

            然后開始寫fontdef文件吧:
            YaHei
            {
                type         truetype
                source         Yahei.ttf
                size         
            12
                resolution     
            92
                code_points 
            33-166 12290-12291 19977-40959 65280-65312
            }
            以上內(nèi)容,你可以單獨(dú)保存一個(gè)fontdef文件,也可以加到別的fontdef文件的后面。
            簡(jiǎn)單解釋一下:type表示的是字體是什么類型,兩種truetype、image;source 就是字體文件的源文件了;size是字體大小;resolution是字體的清晰度,用72或者96dpi就可以了。code_points是指定編碼的范圍的吧,格式是nn-mm,nn是開始范圍,mm是結(jié)束范圍。在上面代碼里面,已經(jīng)包含了至少兩萬(wàn)的字符,很多了,啟動(dòng)時(shí)候會(huì)讓你抓狂的。

            在這里,我們只是修改Ogre的Debug Overlay,因此我們還需要修改OgreCore.zip當(dāng)中的OgreDebugPanel.overlay,將里面的BlueHighway全部都替換為YaHei。

            好了,到這里資源部分的準(zhǔn)備就好了,下面進(jìn)入到C++代碼的編碼了。

            打開OgreOverlayElement.h ,會(huì)發(fā)現(xiàn)這樣一段代碼:
            #if OGRE_UNICODE_SUPPORT
                typedef UTFString DisplayString;
            #    define OGRE_DEREF_DISPLAYSTRING_ITERATOR(it) it.getCharacter()
            #else
                typedef String DisplayString;
            #    define OGRE_DEREF_DISPLAYSTRING_ITERATOR(it) 
            *it
            #endif

            由代碼可知,如果Ogre支持Unicode的話,DispalyString這個(gè)類型其實(shí)是UTFString,也就是說(shuō)是一個(gè)Unicode字符串。

            隨便打開一個(gè)Ogre自帶的Sample,然后打開通用文件ExampleFrameListener.h ,找到:
                    static String currFps = "Current FPS: ";
                    
            static String avgFps = "Average FPS: ";
                    
            static String bestFps = "Best FPS: ";
                    
            static String worstFps = "Worst FPS: ";
                    
            static String tris = "Triangle Count: ";
                    
            static String batches = "Batch Count: ";
            修改為:
                    static DisplayString currFps = L"當(dāng)前幀率: ";
                    
            static DisplayString avgFps = L"平均幀率: ";
                    
            static DisplayString bestFps = L"最佳幀率: ";
                    
            static DisplayString worstFps = L"最差幀率: ";
                    
            static DisplayString tris = L"三角形數(shù): ";
                    
            static DisplayString batches = L"批次: ";

            嘎嘎,然后就可以跑跑看了!
            看截圖:


            PS:我剛才用最初的code_point居然漏掉了一個(gè)“三”字,無(wú)語(yǔ)死了!三是19977.這里有一個(gè)兄弟做的查看器:
            下載頁(yè)面:http://www.cnblogs.com/gogoplayer/archive/2008/05/09/1189795.html
            下載地址:http://www.cnblogs.com/Files/gogoplayer/Ogre/UnicodeViewer.rar
            在這里可以看到更多的信息。

            posted on 2008-06-25 19:37 楊粼波 閱讀(1269) 評(píng)論(0)  編輯 收藏 引用


            只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。
            網(wǎng)站導(dǎo)航: 博客園   IT新聞   BlogJava   博問(wèn)   Chat2DB   管理


            亚洲国产日韩欧美久久| 精品久久久久久无码专区| 色偷偷88欧美精品久久久| 久久人人爽人人爽人人片AV麻豆| 亚洲精品第一综合99久久| 91精品国产综合久久婷婷| 日韩va亚洲va欧美va久久| 潮喷大喷水系列无码久久精品| 久久精品国产第一区二区| 色婷婷综合久久久久中文| 久久高潮一级毛片免费| 国产成人久久精品一区二区三区| 国产99久久久国产精品小说| 97久久精品国产精品青草| 久久青青草视频| 久久久久无码中| 国产成人AV综合久久| 麻豆成人久久精品二区三区免费 | 久久久久亚洲AV综合波多野结衣 | 精品久久久久香蕉网| 久久只有这精品99| 久久综合久久鬼色| 精品久久久久久亚洲| 国产精品无码久久综合| 亚洲综合精品香蕉久久网| 久久大香萑太香蕉av| 亚洲精品99久久久久中文字幕| 99久久精品无码一区二区毛片| 精品国产一区二区三区久久| 久久精品aⅴ无码中文字字幕重口| 久久国产色av免费看| 精品久久久久久国产| 亚洲va久久久久| 狠狠精品久久久无码中文字幕| 久久久久亚洲AV成人网人人网站| 久久亚洲欧洲国产综合| 久久综合九色综合久99| 免费精品久久天干天干| 无码国内精品久久综合88| 亚洲国产精品18久久久久久| 久久婷婷国产综合精品|