看sdlpal源码的时候,想了解下游戏界面上那些像素字是如何绘制显示的,于是就去了解了下点阵字。虽然有SDL_ttf这个库,你只需要找个字体文件,然后调用库提供的API就可以在屏幕上显示字体了。但是如果游戏只是显示下简单的像素字的话,加个SDL_ttf库就显得臃肿了。不管怎样,多深入了解下又不是坏事,你还是可以使用更简单方便的字体库来显示字体。
关于点阵字的一些介绍就不细讲了,网上一搜一大把。我只讲下用SDL绘制点阵字的过程。首先,我们要有在屏幕上显示的汉字字模(拿1616的点阵字来说的话,字模就是一个16行2列的一个二维数组,里边存放着十六进制数,这些十六进制数描述了这个1616矩阵中每个点是0还是1。具体是怎样的,看后面的代码),这个搜一下在线点阵字体生成器就有了。这里绘制一下“廖望塔”三个字,下面这张图就是16*16的字体点阵了:
白点代表1,蓝点代表0。所以它的十六进制数组是(上面的图和下面的数组是不对应的,因为不是同一个地方生成的,把途中的点用对应的十六进制描述会对应不上…不过都差不多,懒得统一了):
// 这里直接把三个字的字模写在一个16行6列的数组里了,也可以单独用3个16*
6的数组存放
const unsigned char wangtal[][6] = {
// 十六进制下,2位为一个字节,二进制下8位为一个字节.所以16个点需要两个2位十六进制表示
// 廖 | 望 | 塔
{0x00, 0x80, 0x10, 0x04