如何在DirectX 11中绘制文本
How do you draw text in DirectX 11?
在DirectX 10中,您可以使用D3DX10提供的字体接口。在DirectX 11中,你应该使用DirectWrite。但是看起来DirectWrite不支持Direct3D?我是不是漏掉了什么基本的东西?如何用DirectX 11绘制简单的文本?
DirectXTK库中有一个SpriteFont
类,可以将文本渲染到DirectX11设备上下文。
Edit 2014:
正如评论中指出的那样,RasterTek教程的链接不再起作用,这里是RadioSpace提供的RasterTek网页链接。
原始答案的第二点也不再有效,因为现在可以与Direct2D共享D3D11 backbuffer,并通过它与DirectWrite绘制文本。
编辑2017:RasterTek仍在运行:字体渲染在D3D11
我知道有两个选项
制作自己的字体渲染引擎,参见Rastertek DX11教程
关于直接写入的第二个选项需要在d3d11和d3d10.1设备之间共享backbuffer,并使用dwrite + d2d + d3d10.1渲染gui和d3d11设备渲染3d几何图形并将其合并到backbuffer中,参见DieterVW在此线程上的帖子
此时dwrite和d2d不接受用d3d11设备创建的表面进行渲染。但希望微软能尽快做到。
我最近将一个DirectX 10应用程序转换为DirectX 11,在搜索相同的答案时遇到了这篇文章。Zeela提到的Rastertek教程很好,但我继续搜索并找到了FW1FontWrapper。只花了大约30分钟,我就把它集成到我的项目中了,它看起来运行得很好。下载部分提供了x86和x64包,包括头文件、库和DLL。我只是做一个简单的文本输出,所以我不能说很多关于API,除了我所做的(每秒输出帧),它只花了大约5行代码(包括创建/释放包装器对象)。根据他的示例,它似乎提供了比我目前使用的更多的选项。
使用DirectWrite,它支持高质量的文本渲染,独立于分辨率的轮廓字体,以及完整的Unicode文本和布局支持。
- QPainter 将 QBrush 设置为 在 QT/C++ 中绘制文本
- 绘制文本问题
- SFML 2.4.2 - 绘制文本时出现分段错误
- 在 Qt C++ 中在自定义项委托上绘制文本时的性能问题
- 如何在透视视图中绘制文本
- Qt:用不同的字体绘制文本
- Linux绘制文本模式(无GUI,桌面)
- 使用Glstipple时,Oglft绘制文本
- 绘制文本和文本剪辑
- 有效地在 QPainterPath 周围绘制文本
- DirectWrite GDI 互操作:使用"IDWriteFontFace"绘制文本的简单方法
- DrawStatustext仅在后续呼叫上不在第一次呼叫上绘制文本
- SFML 在绘制文本时崩溃
- QPainter 未正确绘制文本
- 当我使用 DirectWrite 在 GDI hdc 上绘制文本时,如何设置透明背景
- 如何在 DirectWrite 中使用默认 UI 字体绘制文本
- Win32 绘制文本在重建后仍然存在
- 如何使用SKIA SKBITMAP在EGL纹理上绘制文本
- Windows 8 现代 UI 应用程序和 DirectX.如何绘制文本
- 在没有项目的情况下使用 Dev c++ 在窗口中绘制文本