我需要在另一个应用程序的顶部绘制由行和文本组成的叠加层。有问题的应用程序是3D外部世界视点,而叠加层是抬头显示器。
我无法访问来自外部世界应用程序的任何类型的回调,以在其绘制循环中执行绘图代码。
直接在应用程序窗口上绘图会导致闪烁,因为绘制循环不会同步,所以对我来说这似乎不是一个选项。
我能想到的一种方法是捕获外部世界应用程序的像素并将它们流式传输到我的应用程序中,这样我就可以在同一个绘制循环中将叠加层绘制在顶部,但这似乎非常低效。
是否有一种有效的方法可以在不闪烁的情况下绘制外部世界的应用程序?
是否有可能在最终显卡输出/显示器的刷新率上绘制一些东西?
P.S。它不一定是OpenGL,但是HUD已经用OpenGL编写,因此它可以更容易。
答案 0 :(得分:1)
为了重复我在评论中所说的内容,我遇到了很多应用程序,这些应用程序劫持3D api调用并注入自己的代码以在每个帧结束时绘制内容 - steam,teamspeak,mumble。因为它在同一个应用程序中没有闪烁,你可以直接绘制,而不是在某处复制结果和合成。我以前从未这样做过,可能也不会很好地解释它。