所以我正在构建这个游戏引擎,发现很难用 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
______|
|当前 PITCH:CAM_PITCH
___|
|当前 FPS:CUR_FPS
_______|
所有这些值都不一定是浮点变量。它们可以是字符串、 double 、整数甚至 bool 值。
如果有人愿意向我解释如何在 D3D11 中执行此操作并且我可以跳过整个调试窗口 schenennigans,我会更高兴。
否则,如果有人能向我解释这是如何完成的,我会很高兴。
最佳答案
你试过了吗TextOut() ?阅读msdn上的文章。您应该已经有了设备上下文,剩下的就简单快捷了。
The TextOut function writes a character string at the specified location, using the currently selected font, background color, and text color.
打印到字符串很简单。
wchar buf[128];
swprintf(buf, "Current X Position: %f", CAM_X_POS);
TextOut(yourDC, screenXPos, screenYPos, &buf, sizeof(buf));
我还没有对此进行测试,但根据 MSDN 文档,这应该可以正常工作。
关于c++ - 用c++将信息写入空窗口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11580549/