Ejemplo n.º 1
0
        public bool Compile(D3DDevice device)
        {
            if (mVertexShaderResult.ResultCode == Result.Ok &&
                mPixelShaderResult.ResultCode == Result.Ok)
            {
                mVertexShader = new VertexShader(device, mVertexShaderResult);
                mPixelShader  = new PixelShader(device, mPixelShaderResult);

                VertexShaderSignature = ShaderSignature.GetInputOutputSignature(mVertexShaderResult);

                mWVPConstantBuffer = new D3DBuffer(device,
                                                   Utilities.SizeOf <Matrix>(),
                                                   ResourceUsage.Default,
                                                   BindFlags.ConstantBuffer,
                                                   CpuAccessFlags.None,
                                                   ResourceOptionFlags.None, 0);

                BufferDescription lightBufferDesc = new BufferDescription()
                {
                    Usage               = ResourceUsage.Dynamic,
                    SizeInBytes         = Utilities.SizeOf <LightBuffer>(),
                    BindFlags           = BindFlags.ConstantBuffer,
                    CpuAccessFlags      = CpuAccessFlags.Write,
                    OptionFlags         = ResourceOptionFlags.None,
                    StructureByteStride = 0
                };

                mLightConstantBuffer = new D3DBuffer(device, lightBufferDesc);
            }

            return((mVertexShader != null) &&
                   (mPixelShader != null) &&
                   (VertexShaderSignature != null));
        }
Ejemplo n.º 2
0
        public static void BuildAndBindShaders()
        {
            D3D11.InputElement[] inputElements =
            {
                new D3D11.InputElement("POSITION", 0, Format.R32G32B32_Float,  0, 0, D3D11.InputClassification.PerVertexData, 0),
                new D3D11.InputElement("COLOR",    0, Format.R32G32B32_Float, 12, 0, D3D11.InputClassification.PerVertexData, 0)
            };

            using (var byteCode = ShaderBytecode.CompileFromFile("vertex.hlsl", "main", "vs_4_0", ShaderFlags.Debug))
            {
                _inputSignature = ShaderSignature.GetInputOutputSignature(byteCode);
                _inputLayout    = new D3D11.InputLayout(_d3dDevice, _inputSignature, inputElements);
                _d3dDeviceContext.InputAssembler.InputLayout = _inputLayout;
                _vertexShader = new D3D11.VertexShader(_d3dDevice, byteCode);
            }

            using (var pixelShaderByteCode = ShaderBytecode.CompileFromFile("pixel.hlsl", "main", "ps_4_0", ShaderFlags.Debug))
            {
                _pixelShader = new D3D11.PixelShader(_d3dDevice, pixelShaderByteCode);
            }

            _d3dDeviceContext.VertexShader.Set(_vertexShader);
            _d3dDeviceContext.PixelShader.Set(_pixelShader);
            _d3dDeviceContext.InputAssembler.PrimitiveTopology = PrimitiveTopology.TriangleList;
        }
Ejemplo n.º 3
0
        /// <summary>
        /// Creates vertex and pixel shaders
        /// </summary>
        /// <returns></returns>
        private ShaderSignature CreateShaders(string file = "MiniCube.fx")
        {
            ShaderSignature signature;

            using (var vertexShaderByteCode = ShaderBytecode.CompileFromFile(file, "VS", "vs_4_0")) {
                _VertexShader = new VertexShader(_device, vertexShaderByteCode);
                signature     = ShaderSignature.GetInputOutputSignature(vertexShaderByteCode);
            };

            using (var pixelShaderByteCode = ShaderBytecode.CompileFromFile(file, "PS", "ps_4_0")) {
                _PixelShader = new PixelShader(_device, pixelShaderByteCode);
            };

            return(signature);
        }