18

In DirectX 10 you could use the font interface provided by D3DX10. In DirectX 11 you are supposed to use DirectWrite. But it looks like DirectWrite doesn't speak natively to Direct3D? Is there something basic I'm missing? How do you draw simple text with DirectX 11?

4

4 回答 4

10

DirectXTK库中有一个SpriteFont类可以将文本呈现到 DirectX11 设备上下文。

于 2013-07-03T17:42:11.810 回答
9

2014年编辑:

正如评论中指出的,指向 RasterTek 教程的链接不再起作用,这是RadioSpace提供的指向RasterTek 的 Webarchive链接。

原始答案的第二点也不再有效,因为它现在可以与 Direct2D 共享 D3D11 后缓冲区,并通过它使用 DirectWrite 绘制文本。

2017年编辑:

RasterTek 仍在运行:D3D11 中的字体渲染


我知道两种选择

  • 制作自己的字体渲染引擎见Rastertek DX11教程

  • 关于直接写入的第二个选项需要在 d3d11 和 d3d10.1 设备之间共享后台缓冲区,并使用 dwrite + d2d + d3d10.1 渲染 gui 和 d3d11 设备来渲染 3d 几何并将其全部合并到后台缓冲区中,请参阅此线程上 DieterVW 的帖子

此时 dwrite 和 d2d 不接受使用 d3d11 设备创建的表面进行渲染。但希望 MS 很快就能做到。

于 2011-04-19T10:29:34.997 回答
7

我最近将 DirectX 10 应用程序转换为 DirectX 11,并在搜索相同答案时遇到了这篇文章。Zeela提到的Rastertek教程很好,但我继续搜索并找到了 FW1FontWrapper。大约 30 分钟后,我刚刚完成了将它集成到我的项目中,它似乎工作得很好。下载部分提供了 x86 和 x64 包,包括头文件、库和 DLL。我只是在做一个简单的文本输出,所以关于 API 我不能说太多,除了我所做的(每秒输出帧数),它只花了大约 5 行代码(包括创建/释放包装器对象)。根据他的样本,它似乎提供了比我目前使用的更多的选择。

于 2011-10-24T16:51:22.470 回答
6

使用DirectWrite,它支持高质量的文本渲染、与分辨率无关的轮廓字体以及完整的 Unicode 文本和布局支持。

于 2013-12-25T22:30:03.507 回答