簡單的例子 - 在一個側面,我們看到攝像頭通過渲染「輸入」的另一方面的標準軟件渲染(標記爲「輸出」)通過一些DirectX的東西呈現(至少在我看來):如何在Windows上捕獲桌面,以便捕獲directX和正常渲染的屏幕部分?
那麼windows api或DirectX api提供了什麼函數來捕獲這樣的混合場景呢?
簡單的例子 - 在一個側面,我們看到攝像頭通過渲染「輸入」的另一方面的標準軟件渲染(標記爲「輸出」)通過一些DirectX的東西呈現(至少在我看來):如何在Windows上捕獲桌面,以便捕獲directX和正常渲染的屏幕部分?
那麼windows api或DirectX api提供了什麼函數來捕獲這樣的混合場景呢?
據我所知,雖然我們可以在屏幕上看到,但並沒有直接捕獲DirectX渲染區域的方法。因爲真正的渲染動作(又名渲染指令)發生在硬件層。所以標準SDK中的API無法知道最終呈現結果,從而導致黑場。
做到這一點的唯一方法可能是將您的希望放在渲染層(如DirectX引擎)本身可以支持輸出接口以及底層渲染操作。所以我建議檢查一些文檔,以確定是否確實存在。
DirectX可以呈現給您提供的窗口的有限部分,使您可以在更大的窗口中創建DX內容的小區域。
TightVNC服務器可以做到這一點,你可能想看看他們在做什麼。從簡單的一瞥通過他們的源代碼,它看起來像他們正在創建一個鏡像主屏幕的虛擬屏幕。 具體來說不過,窺視 CreateCompatibleDC
和CreateDIBSection
API的
他們是否使用鏡像驅動程序? – rogerdpack 2014-01-30 23:04:19
很難理解你在找什麼。你能否詳細說明一下? – Artium 2011-06-04 11:43:22
我不認爲你可以,因爲其他的東西只是從圖形卡的內存中抓取,但DirectX或OpenGL的東西不會以同樣的方式渲染到內存中。 – 2011-06-04 12:09:29
打戳然後粘貼在油漆;) – BlackBear 2011-06-04 12:21:09