Delphi - DirectX - OSD/屏幕叠加

7
晚上好,大家好, 我目前正在使用Delphi 2010开发NVIDIA GPU温度监测器。它还将提供来自WMI的系统信息。
目前,我正在为不同情况下开发几种不同的OSD(屏幕上显示)方法。我已经有了两种方法,但我需要另一种专门用于游戏的方法。
我想做的是使用Direct2D或Direct3D显示带有一些文本的叠加层或OSD。 DLL注入是有风险的,而且非常难以完美实现。正如你所想象的那样,我试图将其叠加到游戏中,但在任何地方叠加都是一样好的。
使用Direct2D或Direct3D进行叠加会更好。钩子可能是一个想法,但这也可能导致需要我注入代码。
基本上,我想要最简单的在屏幕上显示文本的方法,没有太大的性能损失,并且在屏幕刷新时不会闪烁(即渲染新帧)。我很想能够绘制图像(因为我在应用程序中包含了图形,输出这些图形将是一个奖励,但输出文本是主要任务)。
我真的不介意是否需要钩子和/或注入,但我对此没有任何经验,绝对需要很多帮助。做类似于MSI Afterburner或FRAPS所做的事情正是我想要的。
我也缺乏任何DX编程或设计方面的知识,因此需要大量的帮助。我已经设计并运行了大部分应用程序,现在只剩下完成这个重要任务和清理其他较小部分的问题。
有什么想法吗?
编辑:为了更容易阅读,减少了段落数。再减少可能无法充分解释重点。对于看到编辑版本的人们,我进行了大量研究但没有结果。
编辑:没有人有更多的输入吗?相反,是否可能使用另一种语言编写的DLL来输出OSD,并简单地将我的参数传递给它?如果是这样,我该如何做,是否有任何语言中的示例代码可供使用?

4
几年前曾尝试过类似的事情(目的非常不同)。我必须说,这并不是世界上最容易实现的事情(尽管我有OpenGL、DirectX(2D和3D)和视频游戏开发的经验)。叠加层很麻烦。希望有人提供一个好的解决方案(我也可以从中受益)。已点赞该问题。如果可能的话,建议缩减段落! - LaKraven
谢谢 LaKraven。我没想到这么容易做到。但是,我是一个有强迫症的开发者,并且在我对应用程序感到满意之前,我不会发布它。如果我不想使用它,因为它比现有的应用程序低劣,除非它只是为了一个特定的目的而设计,否则我觉得我不能将其发布到世界上。我确实减少了原始问题中的上下文量 :) - Scott P
1个回答

2

您可能想看看Taksi。它类似于开源的FRAPS。是的,涉及代码注入和挂钩。而且,它是用C++编写的。


谢谢"iamjoosy",我猜这是个好东西。在RAD Studio 2010中构建将给我使用它的选项,但我仍然更喜欢用Delphi来完成这个项目。不过我还是点了个赞,因为值得研究一下。 - Scott P

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接