我正在尝试使用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桌面的后台缓冲区。 –