예제 #1
0
        public void SetDepthStencilState(H1DepthStencilDescription depthStencilDesc)
        {
            DepthStencilStateDescription newDepthStencilStateDesc = DepthStencilStateDescription.Default();

            newDepthStencilStateDesc.IsDepthEnabled   = depthStencilDesc.DepthEnable;
            newDepthStencilStateDesc.DepthWriteMask   = H1RHIDefinitionHelper.ConvertToDepthWriteMask(depthStencilDesc.DepthWriteMask);
            newDepthStencilStateDesc.DepthComparison  = H1RHIDefinitionHelper.ConvertToComparisonFunc(depthStencilDesc.DepthFunc);
            newDepthStencilStateDesc.IsStencilEnabled = depthStencilDesc.StencilEnable;
            newDepthStencilStateDesc.StencilReadMask  = depthStencilDesc.StencilReadMask;
            newDepthStencilStateDesc.StencilWriteMask = depthStencilDesc.StencilWriteMask;

            newDepthStencilStateDesc.FrontFace = new DepthStencilOperationDescription();
            newDepthStencilStateDesc.FrontFace.DepthFailOperation = H1RHIDefinitionHelper.ConvertToStencilOp(depthStencilDesc.FrontFace.StencilDepthFailOp);
            newDepthStencilStateDesc.FrontFace.FailOperation      = H1RHIDefinitionHelper.ConvertToStencilOp(depthStencilDesc.FrontFace.StencilFailOp);
            newDepthStencilStateDesc.FrontFace.PassOperation      = H1RHIDefinitionHelper.ConvertToStencilOp(depthStencilDesc.FrontFace.StencilPassOp);
            newDepthStencilStateDesc.FrontFace.Comparison         = H1RHIDefinitionHelper.ConvertToComparisonFunc(depthStencilDesc.FrontFace.StencilFunc);

            newDepthStencilStateDesc.BackFace = new DepthStencilOperationDescription();
            newDepthStencilStateDesc.BackFace.DepthFailOperation = H1RHIDefinitionHelper.ConvertToStencilOp(depthStencilDesc.BackFace.StencilDepthFailOp);
            newDepthStencilStateDesc.BackFace.FailOperation      = H1RHIDefinitionHelper.ConvertToStencilOp(depthStencilDesc.BackFace.StencilFailOp);
            newDepthStencilStateDesc.BackFace.PassOperation      = H1RHIDefinitionHelper.ConvertToStencilOp(depthStencilDesc.BackFace.StencilPassOp);
            newDepthStencilStateDesc.BackFace.Comparison         = H1RHIDefinitionHelper.ConvertToComparisonFunc(depthStencilDesc.BackFace.StencilFunc);

            m_GraphicsPipelineStateDesc.DepthStencilState = newDepthStencilStateDesc;
        }