2011-06-04 94 views
2

簡單的例子 - 在一個側面,我們看到攝像頭通過渲染「輸入」的另一方面的標準軟件渲染(標記爲「輸出」)通過一些DirectX的東西呈現(至少在我看來):如何在Windows上捕獲桌面,以便捕獲directX和正常渲染的屏幕部分?

enter image description here

那麼windows api或DirectX api提供了什麼函數來捕獲這樣的混合場景呢?

+0

很難理解你在找什麼。你能否詳細說明一下? – Artium 2011-06-04 11:43:22

+0

我不認爲你可以,因爲其他的東西只是從圖形卡的內存中抓取,但DirectX或OpenGL的東西不會以同樣的方式渲染到內存中。 – 2011-06-04 12:09:29

+0

打戳然後粘貼在油漆;) – BlackBear 2011-06-04 12:21:09

回答

1

據我所知,雖然我們可以在屏幕上看到,但並沒有直接捕獲DirectX渲染區域的方法。因爲真正的渲染動作(又名渲染指令)發生在硬件層。所以標準SDK中的API無法知道最終呈現結果,從而導致黑場。

做到這一點的唯一方法可能是將您的希望放在渲染層(如DirectX引擎)本身可以支持輸出接口以及底層渲染操作。所以我建議檢查一些文檔,以確定是否確實存在。

1

DirectX可以呈現給您提供的窗口的有限部分,使您可以在更大的窗口中創建DX內容的小區域。

2

TightVNC服務器可以做到這一點,你可能想看看他們在做什麼。從簡單的一瞥通過他們的源代碼,它看起來像他們正在創建一個鏡像主屏幕的虛擬屏幕。 具體來說不過,窺視 CreateCompatibleDCCreateDIBSection API的

+0

他們是否使用鏡像驅動程序? – rogerdpack 2014-01-30 23:04:19