private void InitializeStages() { inputAssembler = nativeDeviceContext.InputAssembler; outputMerger = nativeDeviceContext.OutputMerger; shaderStages[(int)ShaderStage.Vertex - 1] = nativeDeviceContext.VertexShader; shaderStages[(int)ShaderStage.Hull - 1] = nativeDeviceContext.HullShader; shaderStages[(int)ShaderStage.Domain - 1] = nativeDeviceContext.DomainShader; shaderStages[(int)ShaderStage.Geometry - 1] = nativeDeviceContext.GeometryShader; shaderStages[(int)ShaderStage.Pixel - 1] = nativeDeviceContext.PixelShader; shaderStages[(int)ShaderStage.Compute - 1] = nativeDeviceContext.ComputeShader; }
protected void OnInitializeDevice() { Form.ClientSize = new Size(_width, _height); // SwapChain description var desc = new SwapChainDescription() { BufferCount = 1, ModeDescription = new ModeDescription(_width, _height, new Rational(60, 1), Format.R8G8B8A8_UNorm), IsWindowed = true, OutputHandle = Form.Handle, SampleDescription = new SampleDescription(1, 0), SwapEffect = SwapEffect.Discard, Usage = Usage.RenderTargetOutput, }; // Create Device and SwapChain SharpDX.Direct3D11.Device.CreateWithSwapChain(DriverType.Hardware, DeviceCreationFlags.None, desc, out _device, out _swapChain); _immediateContext = _device.ImmediateContext; outputMerger = _immediateContext.OutputMerger; inputAssembler = _immediateContext.InputAssembler; Factory factory = _swapChain.GetParent<Factory>(); factory.MakeWindowAssociation(Form.Handle, WindowAssociationFlags.None); var blendStateDesc = new BlendStateDescription(); blendStateDesc.RenderTarget[0].IsBlendEnabled = true; blendStateDesc.RenderTarget[0].SourceBlend = BlendOption.SourceAlpha; blendStateDesc.RenderTarget[0].DestinationBlend = BlendOption.InverseSourceAlpha; blendStateDesc.RenderTarget[0].BlendOperation = BlendOperation.Add; blendStateDesc.RenderTarget[0].SourceAlphaBlend = BlendOption.One; blendStateDesc.RenderTarget[0].DestinationAlphaBlend = BlendOption.Zero; blendStateDesc.RenderTarget[0].AlphaBlendOperation = BlendOperation.Add; blendStateDesc.RenderTarget[0].RenderTargetWriteMask = ColorWriteMaskFlags.All; alphaBlendState = new BlendState(_device, blendStateDesc); }