DirectX 9字体库?

时间:2013-04-19 13:56:34

标签: c++ windows directx directx-9

我查看了DirectX文档中的Font类并查看了this/these question/answers,但它们并不能满足我的需求。

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

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

我正在使用的current课程确实满足了我的大部分需求,但是因为地狱有些错误:(就我的alt选项卡而言,当我绘制信息的第三方应用程序时,它会崩溃并且它会以某种方式不在我的DLL中。)

2 个答案:

答案 0 :(得分:1)

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

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

步骤一步:

  1. FreeType:加载字体文件并将每个字符渲染为小位图
  2. 你的地图集创建:将所有小位图合并(blit)到大地图集纹理中并存储“atlas字典”中每个字符的属性(坐标,大小,字距调整,其他内容)。
  3. 使用精灵批处理从地图集(使用字典)绘制字符
  4. 嗯,这是第一次你可以从某些开始:从FreeType获取角色的位图并直接绘制它,但我认为性能会非常低。

    <强>更新 很难在这样的话题上写一个小例子,但是:

    • 关于字体加载库,您可以阅读其docs
    • 关于您可以查看的地图集Chad Vernon's blog。这是C#,但C ++编码器的语法很容易理解。 BitmapCharacterSet在他的代码中是地图集。
    • 关于精灵批处理:检查Frank Luna书籍和/或源代码。在他的小工具库中,他也有一个字体渲染器

答案 1 :(得分:0)

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

但它不是一个随时可用的库。