public static uint GetMaximumFrameLatency(this IDXGIDevice1 device)
        {
            if (device == null)
            {
                throw new ArgumentNullException(nameof(device));
            }

            device.GetMaximumFrameLatency(out var latency).ThrowOnError();
            return(latency);
        }
        public static IComObject <T> CreateSwapChainForComposition <T>(this IDXGIFactory2 factory,
                                                                       IDXGIDevice1 device,
                                                                       DXGI_SWAP_CHAIN_DESC1 desc,
                                                                       IDXGIOutput1 restrictToOutput = null) where T : IDXGISwapChain1
        {
            if (factory == null)
            {
                throw new ArgumentNullException(nameof(factory));
            }

            if (device == null)
            {
                throw new ArgumentNullException(nameof(device));
            }

            factory.CreateSwapChainForComposition(device, ref desc, restrictToOutput, out var swapChain).ThrowOnError();
            return(new ComObject <T>((T)swapChain));
        }
Exemple #3
0
        public static ComObject <T> CreateSwapChainForHwnd <T>(this IDXGIFactory2 factory,
                                                               IDXGIDevice1 device,
                                                               IntPtr hwnd,
                                                               DXGI_SWAP_CHAIN_DESC1 desc,
                                                               DXGI_SWAP_CHAIN_FULLSCREEN_DESC?fullScreenDesc = null,
                                                               IDXGIOutput1 restrictToOutput = null) where T : IDXGISwapChain1
        {
            if (factory == null)
            {
                throw new ArgumentNullException(nameof(factory));
            }

            if (device == null)
            {
                throw new ArgumentNullException(nameof(device));
            }

            using (var mem = fullScreenDesc.StructureToMemory())
            {
                factory.CreateSwapChainForHwnd(device, hwnd, ref desc, mem.Pointer, restrictToOutput, out var swapChain).ThrowOnError();
                return(new ComObject <T>((T)swapChain));
            }
        }
 public static IComObject <T> CreateSwapChainForHwnd <T>(this IComObject <IDXGIFactory2> factory,
                                                         IDXGIDevice1 device,
                                                         IntPtr hwnd,
                                                         DXGI_SWAP_CHAIN_DESC1 desc,
                                                         DXGI_SWAP_CHAIN_FULLSCREEN_DESC?fullScreenDesc = null,
                                                         IComObject <IDXGIOutput1> restrictToOutput     = null) where T : IDXGISwapChain1 => CreateSwapChainForHwnd <T>(factory?.Object, device, hwnd, desc, fullScreenDesc, restrictToOutput?.Object);