0

我查看了 DirectX 文档中的 Font 类并查看了这个/这些问题/答案,但它们并没有满足我的需要。

我尝试搜索“C++ DirectX 9 字体库”,但这并没有产生任何有用的结果。

是否有任何可用的 DX9 字体库,例如,可以加载 TTF 字体(例如 Arial)然后在屏幕上绘制它们?

我正在使用的当前类确实满足了我的大部分需求,但有很多问题:((就我在其中绘制信息的第三方应用程序而言,当我 alt 选项卡时,它崩溃了,并且不知何故不在我的 DLL 中)。

4

2 回答 2

1

是时候编写自己的位图字体渲染器了!你会需要:

  • 好的字体加载器(FreeType
  • 纹理图集:包含所有字母的大纹理和包含每个字母元数据的字典
  • 某种 Sprite 批处理:高效的精灵绘制

一步步:

  1. FreeType:加载字体文件并将每个字符渲染为小位图
  2. 您的图集创建:将所有小位图合并(blit)到大图集纹理中,并将每个字符的属性(坐标、大小、字距调整、其他内容)存储在“图集字典”中。
  3. 使用精灵批处理从图集(使用字典)中绘制字符

嗯,第一次你可以从类似这样的开始:从 FreeType 中获取角色的位图并直接绘制它,但我认为性能会非常低。

更新: 很难写一个关于这样一个话题的小例子,但是:

  • 关于字体加载库,您可以阅读其文档
  • 关于地图集,您可以查看Chad Vernon 的博客。它是 C#,但 C++ 编码器的语法很容易理解。BitmapCharacterSet在他的代码中是图集。
  • 关于精灵批处理:查看Frank Luna书籍和/或源代码。在他的小型实用程序库中,他也有一个字体渲染器
于 2013-04-23T20:38:02.673 回答
0

您可能想看看将 TTF 字体转换为位图的 BMFont ( http://www.angelcode.com/products/bmfont/ )。然后可以使用以下代码呈现它们:http ://www.angelcode.com/dev/bmfonts/

虽然它不是一个现成的库。

于 2013-04-19T14:31:48.240 回答