c++ - 在 DirectX 9/c++ 中绘制可读文本

标签 c++ text directx

我想在我的第一人称游戏中在他们的头顶上显示角色的名字(使用 DirectX 9 和 c++)。我使用 D3DXVec3Project 在正确的位置绘制文本来获取屏幕坐标,但仅使用 D3DXFONT 显示文本的可读性不太好。它下面需要有一个背景 Sprite (或呈现纹理的其他方式),以便文本颜色在背景下显示。简而言之,我只想在浅色文本下方绘制一个黑框纹理。

我想要类似于“Morrowind”屏幕截图顶部文本框的内容:http://nerdtrek.com/wp-content/uploads/2011/11/Morrowind-Screenshot.jpg

什么是合理的方法来做到这一点?我尝试简单地加载一个 Sprite 并将其绘制在那里,但即使我将其置于文本位置的中心,我确实需要能够任意拉伸(stretch)它以匹配其所附文本字符串的长度。

任何链接、推荐阅读或示例将不胜感激。感谢您抽出时间。

最佳答案

您可以调用ID3DXFont.DrawString带有 DT_CALCRECT 标志。这应该返回文本边界矩形的宽度/高度,而不绘制它。

使用这些信息,应该很容易绘制任何您想要作为文本背景的 Sprite 。

希望这有帮助!

关于c++ - 在 DirectX 9/c++ 中绘制可读文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10980250/

相关文章:

c++ - 添加几何着色器会导致 “shader linkage error”

c++ - std::string 部分转换为整数

html - css 文本背景对于文本行之间的空间不同

text - 文本控件失去焦点时如何获取事件?

c# - 在 WPF 的富文本框中突出显示关键字

c++ - VS 2015 图形调试器给我源错误

c++ - 来自系统存储的证书上下文始终具有无效的 pbCertEncoded 指针

c++ - SFINAE 在类型和非类型模板参数的情况下工作方式不同

c++ - 如何将预建库添加到 VC++ 解决方案中?

c++ - 如何在窗口标题中显示帧率?