我正在嘗試使用SlimDX使用Direct 11捕獲桌面圖像。但是我不知道如何在顯示器桌面上使用directX 11獲得後臺緩衝區。我試過這樣的C#就像這樣。爲什麼它沒有得到桌面的後臺緩衝區?使用directX進行桌面捕獲11
[DllImport("user32.dll", SetLastError = false)]
static extern IntPtr GetDesktopWindow();
Device device1;
SwapChain swapChain1;
var description1 = new SwapChainDescription()
{
BufferCount = 1,
Usage = Usage.ReadOnly,
OutputHandle = GetDesktopWindow(),
IsWindowed = true,
ModeDescription = new ModeDescription(0, 0, new Rational(60, 1), Format.R8G8B8A8_UNorm),
SampleDescription = new SampleDescription(1, 0),
Flags = SwapChainFlags.AllowModeSwitch,
SwapEffect = SwapEffect.Sequential
};
Device.CreateWithSwapChain(DriverType.Hardware, DeviceCreationFlags.None, description, out device1, out swapChain1);
var resource1 = Resource.FromSwapChain<Texture2D>(swapChain1, 0);
SlimDX.Direct3D11.Texture2D.SaveTextureToFile(context, resource1, ImageFileFormat.Png, "D:\\MyImage");
如果不是這種方式不起作用我怎麼能用directX 11捕獲桌面圖像? 如果有人能回答,這將會非常有幫助。
它沒有解釋它明確。你想要backbuffer還是監視桌面? –
我想用DirectX 11獲取桌面窗口的圖像。所以我需要獲取桌面窗口的後臺緩衝區。 DirectX 9有一個名爲「GetBackBuffer」的函數來獲取桌面的後臺緩衝區。但是我沒有找到任何功能或任何方式來獲得DirectX 11桌面的後臺緩衝區。 –