cocos2d-x Label几种字体分析

本文分析了cocos2d-x中Label的字体类型,包括SystemFont、TTF、BMFont和CharMap,探讨了它们的创建方式和纹理共用。针对游戏文字的零散显示特性,提出了按需加载、合理分配纹理大小、文字纹理共用、渲染批次整合和高文字命中率等优化策略。同时,针对非系统字体绘制的批次渲染问题,提出了自定义Label扩展类的解决方案。
摘要由CSDN通过智能技术生成

阅读提示

  1. 加???表示可能描述不准确,或不太确定细节。

  2. 用词不准确的地方比较多,描述不严谨的地方比较多

  3. 可能理解都是错误的,抛砖引玉吧

  4. cocos2d-x 版本:cocos2d-x 3.3

  5. 转载或引用要注明出处地址:“”

基本知识

  1. cocos2d-x的Label是文字显示的基本类???其它文字显示类,是以这个为基础???

  2. cocos2d-x支持SystemFont、TTF、BMFont、CharMap几种文字创建方式(写文字信息到纹理)。

  3. 在创建好文字后,TTF、BMFont、CharMap是相同的绘制流程???SystemFont区别于前三个。

  4. SystemFont生成的文字纹理不可共用???属于一个Label对象对应一个单独的纹理块???

  5. TTF、BMFont、CharMap,就每个类型,只要是相同的文字配置,就共用文字纹理块,属于多个Label对象共用一个文字纹理块。

  6. TTF文字,会默认创建一个512*512的纹理,在实际显示文字时,判断纹理上是否有对应文字信息,如果没有,从ttf字体文件,取对应文字信息,写到纹理空缺位置,并且记录文字在纹理的位置区域,如果一个纹理写满,再创建一个新纹理继续写。

  7. BMFont、CharMap根据图片创建纹理,如果图片上都是字,那么生成的纹理上也都是字了,没有写文字信息到纹理这个操作。

  8. BMFont有配置文件,用来记录每个文字在纹理上的区域。

  9. CharMap是根据ASCII字符来确定纹理上的文字区域???所以文字显示只覆盖ASCII表。

  10. BMFont是直接根据图片尺寸创建纹理???如果文字信息比较多,图片的尺寸比较大,超过了纹理大小的限制就会失败,看另一个引擎,只是把文字图片加载到内存,用时,根据需要拷贝对应区域像素信息到纹理。

  11. 采用那种字体,要根据游戏实际需求。没有优劣之分,只有是否合适,可以在下面’对比列表‘看到一些分析。

游戏文字

游戏中用到的文字基本呈零散的方式出现,比如名字,像rpg游戏,显示100个生物,每个生物头上顶一个名字,这些显示的名字就是一个个零散的字符串。物品商店,显示零散文字可能最多,比如每个商品的名字、价格、等级、种类、简单描述、存量等。游戏中出现大段文本的:任务描述、故事情节介绍,在实际游戏操作中所占游戏时间基本可以忽略掉(不考虑文本游戏)???据此,**处理游戏文字,要以优化’同屏显示多个零散字符串‘为主,以优化显示大段文字内容为次。

字母类语言的好处是,很少数量的字母就能满足全部文字显示需要,比如英语,但是对汉字而言,常用字就几千个,如何高效的在游戏中绘制文字,根据一些人的文章整理如下:

1. 按需、适时加载文字到纹理:游戏中用到的文字基本呈零散的方式出现,根据这个特点,用到具体文字时才适时加载到纹理,是最合理的使用存储空间(针对文字比较多的情况)??࿱

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值