最近研究的东西都是非常肤浅的,连自己都是这么认为。不过还是看看我实现的Direct3D中载入字体吧。
起作用的是这个函数:D3DXCreateFont()。MSDN上有它的用法及相关解释,在这里我就不展示了,下面是我的习惯用法:
// 创建字体
HRESULT hr;
hr = D3DXCreateFont(
m_pDevice, // DIRECT3DDEVICE9的指针
64, // 字体的大小(高度)
0, // 字体附加的宽度,通常为0
0, // 字体是否加粗的标志
1, // mip级别,通常设为1,即只有原字体
0, // 字体是否为斜体的标志
DEFAULT_CHARSET, // 字符集,通常是默认的
OUT_DEFAULT_PRECIS, // 是否与windows字体精确匹配
DEFAULT_QUALITY, // 文本质量,只影响光栅字体
DEFAULT_PITCH | FF_DONTCARE, // pitch和family索引,通常设置默认值
TEXT( "文泉驿正黑" ), // 字体名称
&m_Font ); // D3DXFONT的指针
哦,对了,我比较喜欢文泉驿正黑字体,这个字体比较好看,和微软的雅黑不相上下。它是Ubuntu下的默认字体。所以我特意从网上下载了这个字体,并且用它进行测试,结果显示,使用中文、日文和英文都毫无问题,当然能不能显示“囧”这个字呢?我测试一下……哦,显示这个字是没有问题的!
![](http://hi.csdn.net/attachment/201202/26/0_1330238050ABat.gif)
// 显示字体
m_Font->DrawText(
NULL, // ID3DXSPRITE指针,可以为NULL,多次渲染时要指定
TEXT( "这是测试字体\nこれはテスト字体である\nThis is a TEST font.\n囧" ), // 字符串
-1, // 字符的字节数,为-1表示系统自动显示
m_pRect, // RECT指针
DT_LEFT, // 显示方式
D3DCOLOR_XRGB( 255, 255, 255 ) ); // 颜色
这里要额外地传入一个RECT类型,我使用了指针,初始化的时候new创建一个,不要的时候则delete掉。看吧,其实就是那么简单。