c++ - 用c++将信息写入空窗口

标签 c++ windows debugging game-engine directx-11

所以我正在构建这个游戏引擎,发现很难用 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/

相关文章:

Xcode 调试器在首次安装应用程序时不起作用

r - 如何识别循环中操作的警告生成实例?

Java 在互联网算法(搜索、大数据等)中的流行

带 vector 的 C++ 2d unordered_map

windows - 用于打印为 PNG(或 SVG)的免费打印机

Android - 如何在 Windows 上构建 native 库并在 Android NDK 中使用它

windows - 我的 TCP/IP 服务器上的最大连接数/线程数?

java - IntelliJ 调试器卡住了

c++ - 将 return 替换为标准输入的选项卡

c++ - printf()、scanf()中的字母 ‘f’和seekg()中的 ‘g’代表什么