public ID3D11Device Create(CreateDeviceArguments arguments) { DxgiSwapChainDesc desc = default; //desc.BufferCount = 2; // how do I use this with depth stencil? desc.BufferCount = 1; desc.BufferDesc.Width = (uint)arguments.Window.Width; desc.BufferDesc.Height = (uint)arguments.Window.Height; desc.BufferDesc.Format = DxgiFormat.R8G8B8A8Unorm; desc.BufferDesc.RefreshRate.Denominator = arguments.RefreshRate; desc.BufferDesc.Scaling = DxgiModeScaling.Unspecified; desc.BufferDesc.ScanlineOrdering = DxgiModeScanlineOrder.Unspecified; //desc.SampleDesc.Count = 4; // AA desc.SampleDesc.Count = 1; desc.SampleDesc.Quality = 0; desc.Flags = 0; desc.BufferUsage = DxgiUsage.RenderTargetOutput; desc.OutputWindow = arguments.Window.Handle; desc.Windowed = arguments.Window.Windowed ? 1 : 0; desc.SwapEffect = DxgiSwapEffect.Discard; //desc.SwapEffect = DxgiSwapEffect.FlipDiscard; // how do I use this with depth stencil? desc.Flags = DxgiSwapChainFlag.AllowModeSwitch; HRESULT result; IntPtr swapChain; IntPtr device; D3DFeatureLevel featureLevel; IntPtr context; var flags = arguments.Debug ? D3D11CreateDeviceFlag.Debug : D3D11CreateDeviceFlag.Default; unsafe { result = D3D11DeviceBindings.D3D11CreateDeviceAndSwapChain_( arguments.Adapter, D3DDriverType.Hardware, IntPtr.Zero, flags, null, 0, D3D11CommonBindings.D3D11SdkVersion(), in desc, out swapChain, out device, out featureLevel, out context); } if (result.Failed) { throw new Win32Exception($"D3D11CreateDeviceAndSwapChain failed with code : 0x{ result.Code.ToString("X")}"); } return(new D3D11Device(device, featureLevel, new D3D11SwapChain(swapChain), new D3D11DeviceContext(context))); }
public ID3D11RenderTargetView CreateRenderTargetView(ID3D11Resource resource) { HRESULT result; IntPtr renderTargetView; unsafe { result = D3D11DeviceBindings.CreateRenderTargetView_(_handle, resource.Handle, (D3D11RenderTargetViewDesc *)null, out renderTargetView); } result.Check(nameof(D3D11Device)); return(new D3D11RenderTargetView(renderTargetView)); }
public ID3D11RenderTargetView CreateRenderTargetView(IntPtr resource) { HRESULT result; IntPtr renderTargetView; unsafe { // Setup the description of the render target view. D3D11RenderTargetViewDesc renderTargetViewDesc; renderTargetViewDesc.Format = DxgiFormat.R32G32B32A32Float; renderTargetViewDesc.ViewDimension = D3D11RtvDimension.Texture2D; renderTargetViewDesc.Texture2D.MipSlice = 0; result = D3D11DeviceBindings.CreateRenderTargetView_(_handle, resource, &renderTargetViewDesc, out renderTargetView); } result.Check(nameof(D3D11Device)); return(new D3D11RenderTargetView(renderTargetView)); }