2011-04-04 54 views
0

我想獲取DX11中的後臺緩衝區像素數據,以便將其保存到文件中。 有什麼辦法可以獲取ID3D11Texture2D的像素數據,而無需爲其創建視圖,然後從視圖獲取資源?ID3DX11Texture2D像素數據

謝謝。

回答

0

您可以鎖定紋理,然後從中複製紋理。但是,返回的位可能與實現有關。此外,不是每個GPU都可以讓你陷入後臺緩衝區,尤其是如果FSAA等...

在這些情況下,對於動態屏幕截圖,您通常會創建一個RenderTarget表面,然後渲染它。

+0

好吧,我想要做的是memcpy後臺緩衝區到另一個紋理,以便當應用程序關閉時,我可以保存多個屏幕截圖。事情是,如果我有理由創建一個RenderTarget,當應用程序關閉所有RenderTargets指向包含最後一個圖像的同一個後臺緩衝區。 – dotminic 2011-04-04 16:07:04

+0

@dotminic,您可能會將RenderTarget與backbuffer混淆。他們是分開的。你創建一個(n)RenderTarget曲面,並渲染它們。之後的照片不會改變。你可以得到(n)不同屏幕截圖的紋理。 – 2011-04-05 02:24:15

+1

這個答案太抽象了。很明顯,問題是關於ID3D11Texture2D,那麼如何「鎖定紋理並從中複製」?我熟悉DX9,我正在尋找這個確切的答案。據我所知,沒有立即的「鎖定」,因爲DX9中有LockRect。 – Kit10 2013-07-30 19:33:45