经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » 软件/图像 » Direct3D » 查看文章
[dx11]利用SpriteFont绘制中文--本地化文本
来源:cnblogs  作者:狐狸小十  时间:2019/2/18 9:19:21  对本文有异议

1.下载DirectX11 Tool Kit SDK,解压后编译,生成DirectXTK.lib库文件和MakeSpriteFont应用工具;

2.在Dx11环境基础上,用生成的库文件搭建XTK环境;

3.利用MakeSpriteFont.exe生成想要的字体纹理库;

命令格式:

path "字体名" "生成路径" /参数:值

如 C://MakeSpriteFont.exe "微软雅黑" "G://wryh.sfont" /CharacterRegion:0x0-0xfff /DefaultCharacter:0x0 /CharacterRegion:0x4E00-0x9FA5 /DefaultCharacter:0x4E00 /FastPack

关于字符区域可以参考MakeSpriteFont中的源码:

  1. 1 // Which characters to include in the font (eg. "/CharacterRegion:0x20-0x7F /CharacterRegion:0x123")
  2. 2 [CommandLineParser.Name("CharacterRegion")]
  3. 3 public readonly List<CharacterRegion> CharacterRegions = new List<CharacterRegion>();
  4. 4
  5. 5 // Fallback character used when asked to render a codepoint that is not
  6. 6 // included in the font. If zero, missing characters throw exceptions.
  7. 7 public readonly int DefaultCharacter = 0;

因为是链表结构,所以可以输入若干不连续的区域.这里建议参照unicode选择所需的编码区域.

当然工程项目也应该是unicode的,若采用其他字符集,则需要自己做编码转换.

4.渲染字体

  1. 1 //声明
  2. 2 std::unique_ptr<DirectX:: SpriteBatch> spriteBatch;
  3. 3 std::unique_ptr<DirectX::SpriteFont> spriteFont;
  4. 4
  5. 5 //初始化
  6. 6 using namespace DirectX;
  7. 7 spriteBatch = std::unique_ptr<SpriteBatch>(new SpriteBatch(g_pImmediateContext));
  8. 8 spriteFont = std::unique_ptr<SpriteFont>(new SpriteFont(g_pd3dDevice, L"./wryh.sfont"));
  9. 9
  10. 10 //渲染
  11. 11 spriteBatch->Begin();
  12. 12 spriteFont->DrawString(spriteBatch.get(), L"文体开花!", DirectX::XMFLOAT2(10, 20));
  13. 13 spriteBatch->End();

5.效果

原文链接:http://www.cnblogs.com/Foxy-Jo/p/10388237.html

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号