我可以使用opengl在窗口上画一些不属于我的东西吗?

发布于 2024-12-06 10:40:03 字数 90 浏览 0 评论 0原文

我听说你可以挂钩窗口句柄并将该窗口用作 OpenGL 画布。我知道如何挂钩窗口,但我找不到如何在这个窗口上绘图。

附言。如果有帮助的话我正在使用Qt。

I heard you can hook window handle and use this window as OpenGL canvas. I know how to hook windows, but I can't find how can I draw on this window.

PS. I'm using Qt if it helps.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

蓝咒 2024-12-13 10:40:03

OpenGL 上下文一次只能在一个线程中使用,并且绑定到进程。因此,需要创建外部进程资源的 OpenGL 上下文。

在 Windows 上,使用一些非常古怪的 hacks 至少在 WinXP 中是可能的(我不知道 Vista 或 7);这通常包括共享大部分进程内存。

在 X11/GLX 上,通过将上下文创建为间接渲染上下文要容易得多(不幸的是,出于某些不正当的原因,OpenGL-3 没有完整的间接 GLX 规范);可以从多个进程访问间接上下文。

无论如何,两个进程必须合作才能完成这项工作。

OpenGL contexts are only usable in one thread at a time and are bound to processes. So what that required was creating a OpenGL context of a foreign process' resource.

On Windows using some very quircky hacks this was possible in at least WinXP (I don't know about Vista or 7); this usually includes making large portions of the process memory shared.

On X11/GLX it's a lot easier by creating the context as indirect rendering context (unfortunately OpenGL-3 has not complete indirect GLX specification, for some shady excuses of reasons); indirect contexts can be accessed from multiple processes.

In any case both processes must cooperate to make this work.

蔚蓝源自深海 2024-12-13 10:40:03

Qt 有一些 NativeWindow 技巧,您可以使用一下。

在 Windows 上,您可以使用 findWindowEx< /a> 获取 HWND 并询问其几何形状,然后将您自己的窗口放置在其顶部。

您确实不应该能够任意干扰另一个进程的窗口——这是一个安全隐患。

Qt has some NativeWindow hacks you can play with a bit.

On Windows you can use findWindowEx to get a HWND and interrogate its geometry, then position your own window on top of it.

You really shouldn't be able to interfere with another process's windows arbitrarily -- it's a security hazard.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文