2013年5月29日 星期三

About dynamic font cache implement with MyGUI

最近剛好有機會接觸到Dynamic Font Cache與MyGUI的整合,目前網路上可以找到的資源都只有簡體的資訊,而且幾乎都是直接更MyGUI的SourceCode,筆者懶得重編MYGUI(除了PC、還有IOS及Andorid,實在太麻煩了…),在這裡跟大家分享一下處理的心得:
  1. 熟悉FreeType字型處理運作的原理,可以看這篇:managing glyphs
  2. Font Texture Cache處理,可以參考OgreFont.cpp裡的Font::loadResource及MyGUI_ResourceTrueTypeFont.cpp裡的ResourceTrueTypeFont::initialise()。
  3. 為了達到不改到MyGUI的任何Code,自己繼承了EditText,重寫了TextView…等,並跟MyGUI的FactoryManager註冊。
  4. 將MyGUI_CommonSkins.xml的"EditText"改成自己的ClassName,比方
    BasisSkin type="DynamicEditText" offset="0 0 16 16" align="Stretch"
PS:
  1. 雖然可以用Plugin來擴充MyGUI,但是流程有點麻煩,就直接把EditText給取代掉了…
  2. Ogre對於UV的換算方式,跟MyGUI不一樣(Ogre是把BearingX及BearingY內含在字的UV中,而MyGUI則是拆開來的,在Render字的時候才利用這些參數來設定相關資料)
  3. MyGUI沒有處理全形空白,筆者有將這個功能加進入。
相關Demo影片:



夢想還在持續中…

沒有留言:

張貼留言