上一篇博客嘗試性在cocos2d-x中使用freetype,由于項目進度,近期沒怎么研究,苦逼加班族。現在稍微閑下來了在小談一下這個話題。
這幾天稍微閑了下,于是打算把freetype集成到公司項目中,這里先總結下,代碼不能上傳,因為在公司沒權限- -!
1.上一篇文章中的的描邊其實有兩處內存泄漏, Get_Glayph后沒有調用Done_Glayph。
2.文字渲染可以glTexSubImage2D函數來替換,也可以一次性通過Rgb數據生成紋理,注意要設置紋理幾個參數,否則拉伸了可能會出現模糊不清,而且初始化創建紋理時應該填充為透明色。同事要注意這個函數,如果你的x+w大于整個紋理寬度是會報錯的,文字也就不見了,要小心。
3.android 加載字體可以直接加載,不需要從內存中讀取,因為系統字體目錄是可以直接訪問讀取的。
4.字體緩存我的實現方法是利用FTC_Manager的前提下將每個字母的RGB數據緩存,下次渲染如果發現效果大小一樣的舊直接返回不再去讀取,要注意的是FTC_Mananger_LookupSize 函數返回的FT_Size結構,所以不能通過它來索引緩存,而應該用實際字體Size,還有就是FT_Size在使用前一定要確保是最新的哦,這里東西是不能長時間保留的,也就是說查找一次用一次。
5.注意android紋理限制,2048*2048,所以對于很長的文本要注意了。
6.為了兼容以前的一些代碼,現在我是直接將CCLabellTTF的實現替換了,所以同時要注意兩個布局參數,調整好了后你會發現在PC端使用android系統字體的話整體效果應該是和在android上一樣,這樣就很方便在PC端查看效果了,美術也就方便不少了。
暫且就想到了這些,整體來說目前測試出的效果目前運行的還算比較流暢的。