欢迎光临散文网 会员登陆 & 注册

个人笔记|Raylib 的字体使用

2022-05-28 21:57 作者:凌空の猫  | 我要投稿

仅个人笔记用;因网上相关资料过少,再加上翻墙困难,希望发上来能帮到一些人。

没想到,整个小玩具,会出现如此之多的问题。

做一个小项目,在处理汉字显示时,意外出现了一些问题,遂将解决过程写在这里

关于导入字体……

根据文章长度,你大致可以推断:这几个对渲染汉字而言,用处相对有限。

第一个函数,暂且不考虑其作用。

普通的LoadFont的默认参数,让其大多数情况下直接被Pass。毕竟,只能录入堪堪两百字啊

但是LoadFontEx意外地不能解决问题。LoadFont与LoadFontEx,通过把字体转化为图片,存入显存,以加快渲染,这是挺聪明的办法。

前提是,glyphCount还只是几百。

不然,直接内存爆炸。(在fontSize=64时内存占用达到GB级)

(毕竟汉字字体动辄几万字,再加上Raylib这个笨蛋用的是Texture存储的字体图片,而非每1bit对应一像素的处理)

接下来,我们看到这两个函数。第一个函数……关键词:XNA(这不就是之前的策略吗)

第二个函数,关键词:MemoryBuffer

换句话说,我们似乎可以把字体文件存在内存里,然后转化成具体的Font

相比,性能有所下降,但是占用内存及大幅度下降

但是第二个函数怎么用呢……似乎没能看到Example,自己随便玩玩,没想到成了

(其中,16375136为字体占磁盘空间的大小)

然后,质的飞跃,发生了——

前者用LoadFontFromMemory实现,后者用LoadFontEx实现。文本包含中文。

前者CPU占用率相较后者低15%,内存占用低87%,能耗水平等均远胜过后者

这个故事告诉我们:

傻孩子们,快跑啊,这可不兴打表!

                                                    ——谁告诉我打表拿省一的来着


说到底,一切算法都还是有适用区间的嘛——显然,Raylib的作者似乎没有想到,会有一个顶级憨批,用最原初的函数,打开一个一个65536个字的字体文件。

个人笔记|Raylib 的字体使用的评论 (共 条)

分享到微博请遵守国家法律