在DirectX 10中,您可以使用D3DX10提供的字体界面。在DirectX 11中,您应该使用DirectWrite。但看起来DirectWrite本身并不能说Direct3D?有什么基本的东西我不见了吗?如何使用DirectX 11绘制简单文本?
答案 0 :(得分:8)
编辑2014:
正如评论中所指出的,RasterTek教程的链接不再起作用,这里是Webarchive of RasterTek提供的RadioSpace链接。
原始答案的第二点也不再有效,因为它现在可以与Direct2D共享D3D11后备缓冲区并通过它与DirectWrite一起绘制文本。
编辑2017:
RasterTek仍在运行:font rendering in D3D11
我知道两个选项
制作您自己的字体呈现引擎,请参阅Rastertek DX11 tutorial
关于直接写入的第二个选项需要在d3d11和d3d10.1设备之间共享后台缓冲,并使用dwrite + d2d + d3d10.1渲染gui和d3d11设备以渲染3d几何体并将其全部合并到后台缓冲区{{3} }
此时dwrite和d2d不接受用d3d11设备创建的表面进行渲染。但希望MS能够很快成功。
答案 1 :(得分:6)
我最近将DirectX 10应用程序转换为DirectX 11,并在搜索相同答案时遇到了这篇文章。 Zeela提到的Rastertek教程很好,但我继续搜索并找到了FW1FontWrapper。大约30分钟后,我刚刚将它整合到我的项目中,它看起来效果很好。下载部分提供x86和x64包,包括头,库和DLL。我只是做一个简单的文本输出,所以我不能说很多关于API,除了我所做的(每秒输出帧数),它只需要大约5行代码(包括创建/释放包装器对象) )。根据他的样本,它似乎提供了比我到目前为止使用的更多选项。
答案 2 :(得分:6)
DirectXTK库中有一个SpriteFont
类,可以将文本呈现给DirectX11设备上下文。
答案 3 :(得分:5)
使用DirectWrite,它支持高质量的文本呈现,与分辨率无关的轮廓字体,以及完整的Unicode文本和布局支持。