SharpDX WPF与SwapChain

时间:2015-11-11 22:22:10

标签: wpf directx directx-11 sharpdx

所有使用WPF的SharpDX实现似乎都在使用D3DImage而不是创建交换链。我知道这可能会导致重度渲染导致闪烁。

我创建了一个像这样的Swapchain:

var desc = new SwapChainDescription() {
                BufferCount = 1,
                ModeDescription = new ModeDescription(width, height, new Rational(60, 1), Format.R8G8B8A8_UNorm),//sview
                IsWindowed = true,
                OutputHandle = handle,
                SampleDescription = new SampleDescription(1, 0),
                SwapEffect = SwapEffect.Discard,
                Usage = Usage.RenderTargetOutput
            };

            FeatureLevel[] levels = new FeatureLevel[] { FeatureLevel.Level_11_0, FeatureLevel.Level_10_1, FeatureLevel.Level_10_0 };

            DeviceCreationFlags flag = DeviceCreationFlags.None;

            Device11.CreateWithSwapChain(SharpDX.Direct3D.DriverType.Hardware, flag, levels, desc, out _device, out _swapchain);

处理作为我的WPF窗口的IntPtr,检索如下:

IntPtr windowHandle = new WindowInteropHelper(this).Handle;

它似乎工作,我可以清除窗口并在设备上运行Present。 这是否意味着我将其呈现为"正常"游戏对象或RenderForm现在还是只是指向D3DImage的windowHandle?

编辑。 我已经意识到当我在设备上运行Present()时,该窗口上的所有控件都会消失。也许这就是为什么你不能这样做的原因。

0 个答案:

没有答案