1

所以我正在构建这个游戏引擎,发现很难用 D3D11 在主游戏窗口中创建某种带有调试信息的叠加层,或者根本无法绘制文本,所以我想我会创建另一个窗口包含我的调试数据。

我的窗口创建得很好,但我不知道如何将调试信息写入其中。我不想使用 windows 窗体设计器,因为那将不得不将我的项目转换为我不想要的 CLR 项目。

我现在已经至少搜索了 3 个小时(老实说)并尝试了各种解决方案,但它们中没有一个看起来真正实用/它们不起作用。

我想写的调试信息来自全局浮点值。一个例子是CAM_POS_X它保存一个浮点值,该值指示相机当前位于哪个 X 坐标。

需要这样的东西:

|SiriusAlpha 0.1 调试窗口_ |
|当前X位置:CAM_POS_X|
|当前 Y 位置:CAM_POS_Y|
|当前Z位置:CAM_POS_Z|
|当前偏航:CAM_YAW_ __ _ __ |
|当前音高:CAM_PITCH_ __|
|当前的FPS:CUR_FPS
_ _ ____ |

所有这些值都不一定是浮点变量。它们可以是字符串、双精度数、整数甚至布尔值。

如果有人愿意向我解释如何在 D3D11 中执行此操作,并且我可以跳过整个调试窗口 schenennigans,我会更高兴。

否则,如果有人可以向我解释这是如何完成的,我会很高兴。

4

1 回答 1

0

你试过TextOut()吗?阅读 msdn 上的文章。你应该已经有了一个设备上下文,剩下的就很简单了。

TextOut 函数使用当前选择的字体、背景颜色和文本颜色在指定位置写入字符串。

打印到字符串是微不足道的。

wchar buf[128];
swprintf(buf, "Current X Position: %f", CAM_X_POS);
TextOut(yourDC, screenXPos, screenYPos, &buf, sizeof(buf));

我没有对此进行测试,但从 MSDN 文档来看,这应该可以正常工作。

于 2012-07-20T13:50:32.763 回答