[dx11]利用SpriteFont绘制中文--本地化文本

本文详细介绍了如何使用DirectX11ToolKitSDK搭建XTK环境,通过MakeSpriteFont生成字体纹理库,并在Dx11环境中渲染字体。包括库文件的编译、字体区域的选择、以及渲染代码的实现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

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

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

4.渲染字体

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

5.效果

转载于:https://www.cnblogs.com/Foxy-Jo/p/10388237.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值