看这篇前建议看下这篇文章帮助理解
上一篇简单讲了下开始界面背景图的绘制过程,当然具体的代码细节没完全理解清楚,但是整体思路应该不会差多少。我又看了下文字的绘制,所以这节就是讲文字的绘制思路了,由于文字的绘制更繁琐,代码更多,就不像上节那样把代码贴出来讲了,也是简单讲下思路(可能比上一节还简单…),具体代码细节还没全看懂。日后能花时间看懂就最好了。
进入主题前,我先讲下文字的概念,当然只是个人的理解。在屏幕上显示的文字和在屏幕上显示的图片其实没多大区别,它们都是由一堆像素构成的。事实上计算机只能处理数字,在屏幕上看到的各种花里胡哨的东西,在计算机中都是一堆二进制,它们各不相同,操作控制(甚至连这些控制命令也是一堆二进制,因为这些命令也是存放在计算机中的)它们的逻辑也不同,所以显示出来也各不相同。像素也是一堆二进制。其实我们可以用SDL创建一个空的texture,然后手动在代码中填写它的pixels,这块pixels有宽和高,你只要在不同的位置填上不同的数字(一般是0~255)就行了,然后利用SDL将它绘制到屏幕上。当然,这会很难看,因为你是乱填的,如果你要认认真真的填出你想要的样子,这就要浪费很多时间了。因此,才会出现各种作图软件和绘画软件,你只需要在屏幕上像画画一样将它画出来并保存到一种特定格式的文件中,需要用到的时候再用代码读取出它的像素数据,然后绘制到屏幕上。文字也是像素,但是它有点特殊,一般都是将很多文字保存到一张纹理中,需要用到的时候再按一定的逻辑从这张纹理中找到对应的文字绘制出来,这里的逻辑肯定不比”Hello World”简单。我们肯定见过一些字体文件,像什么font.ttf,这样的文件中保存着字体的一些信息,然后有专门的字体库,像freetype,可以对文件进行解析,然后转换成一张纹理,再然后从这张纹理中选取对应的文字进行显示。
说了一堆废话应该对文字有大概的理解了,下面进入主题,Pal游戏中也有字体文件:wor16.asc
和wor16.fon
。asc文件保存着每个汉字在fon文件中的下标,fo