访问每个窗口的渲染区域

时间:2014-07-23 11:47:29

标签: windows opengl directx render target

访问Microsoft Windows中每个窗口的渲染区域的最佳方法是什么,所以我可以自己在3D中渲染它们?我知道桌面窗口管理器(dwm)为每个窗口提供一个rendertarget,并在屏幕上显示它们。 那里有很多3D窗口管理器,但找到一些代码或其他信息对我来说很难,所以我问你。 我想在OpenGL中做到这一点,但我可以想象它在DirectX中是可能的,但这也很好。 提前谢谢!

1 个答案:

答案 0 :(得分:2)

您必须使用专用于该任务的operaring系统/图形系统特定API。 OpenGL操作和图形系统无关,并且没有“窗口”的概念。

在Windows中,您必须使用的API是DWM API。对于早于DWM API(XP及更早版本)的Windows版本,必须使用一些“脏”黑客来获取窗口的内容(主要是挂钩WM_PAINT和WM_ERASEBACKGROUND消息,以及GDI的BeginPaint和EndPaint函数来复制窗口) '内容到可用于更新纹理的DIBSECTION中。)

在X11中,要使用的API是XComposite + GLX_ARB_texture_from_pixmap扩展