2

我需要在另一个应用程序的顶部绘制由线条和文本组成的叠加层。有问题的应用程序是 3D 外部世界视点,而覆盖是平视显示器。

我无法访问来自外部世界应用程序的任何类型的回调来在其绘制循环中执行绘制代码。

直接在应用程序的窗口上绘图会导致闪烁,因为绘图循环不会同步,所以对我来说这似乎不是一个选项。

我能想到的一种方法是捕获外部世界应用程序的像素并将它们流式传输到我的应用程序中,这样我就可以在同一个绘制循环中在顶部绘制叠加层,但这似乎非常低效。

有没有一种有效的方法可以在不闪烁的情况下绘制外部世界应用程序?

是否可以在最终的显卡输出/显示器的刷新率上绘制一些东西?

Ps 它不一定是 OpenGL,但 HUD 已经用 OpenGL 编写,所以它会更容易。

4

1 回答 1

1

重复我在评论中所说的话,我遇到了很多劫持 3D api 调用并注入自己的代码以在每一帧结束时绘制内容的应用程序 - steam、teampeak、mumble。由于它在同一个应用程序中,因此没有闪烁,您可以直接绘制,而不是将结果复制到某处并合成。我以前从未做过,可能不会很好地解释它。

一个相关的问题在这里:Overlaying on a 3D fullscreen application

于 2013-10-29T13:27:16.080 回答