2014-07-23 56 views
0

在Microsoft Windows中訪問每個窗口的渲染區域的最佳方式是什麼,所以我可以使用3D渲染它們?我知道桌面窗口管理器(dwm)爲每個窗口提供了一個rendertarget,並將它們全部渲染在屏幕上。 有很多3D窗口管理器,但找到一些代碼或其他信息對我來說很難,所以我問你。 我想在OpenGL中做到這一點,但我可以想象它在DirectX中是可能的,但也沒關係。 在此先感謝!訪問每個窗口的渲染區域

回答

2

您必須使用專用於該任務的操作系統/圖形系統專用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擴展