上一篇博客尝试性在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端查看效果了,美术也就方便不少了。
暂且就想到了这些,整体来说目前测试出的效果目前运行的还算比较流畅的。