Пример #1
0
 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;
 }
Пример #2
0
        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);
        }
Пример #3
0
 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;
 }