Beispiel #1
0
        internal DepthStencilState(DepthStencilStateDescription depthStencilStateDescription, bool hasDepthStencilBuffer)
        {
            state.DepthBufferEnable      = depthStencilStateDescription.DepthBufferEnable;
            state.DepthBufferWriteEnable = depthStencilStateDescription.DepthBufferWriteEnable && hasDepthStencilBuffer;

            state.StencilEnable    = depthStencilStateDescription.StencilEnable;
            state.StencilMask      = depthStencilStateDescription.StencilMask;
            state.StencilWriteMask = depthStencilStateDescription.StencilWriteMask;

            state.DepthFunction = depthStencilStateDescription.DepthBufferFunction.ToOpenGLDepthFunction();

            state.Faces.FrontFaceStencilFunction = depthStencilStateDescription.FrontFace.StencilFunction.ToOpenGLStencilFunction();
            state.Faces.FrontFaceDepthFailOp     = depthStencilStateDescription.FrontFace.StencilDepthBufferFail.ToOpenGL();
            state.Faces.FrontFaceFailOp          = depthStencilStateDescription.FrontFace.StencilFail.ToOpenGL();
            state.Faces.FrontFacePassOp          = depthStencilStateDescription.FrontFace.StencilPass.ToOpenGL();

            state.Faces.BackFaceStencilFunction = depthStencilStateDescription.BackFace.StencilFunction.ToOpenGLStencilFunction();
            state.Faces.BackFaceDepthFailOp     = depthStencilStateDescription.BackFace.StencilDepthBufferFail.ToOpenGL();
            state.Faces.BackFaceFailOp          = depthStencilStateDescription.BackFace.StencilFail.ToOpenGL();
            state.Faces.BackFacePassOp          = depthStencilStateDescription.BackFace.StencilPass.ToOpenGL();
        }
            private SharpDX.Direct3D11.DepthStencilStateDescription CreateDepthStencilState(DepthStencilStateDescription description)
            {
                SharpDX.Direct3D11.DepthStencilStateDescription nativeDescription;

                nativeDescription.IsDepthEnabled  = description.DepthBufferEnable;
                nativeDescription.DepthComparison = (SharpDX.Direct3D11.Comparison)description.DepthBufferFunction;
                nativeDescription.DepthWriteMask  = description.DepthBufferWriteEnable ? SharpDX.Direct3D11.DepthWriteMask.All : SharpDX.Direct3D11.DepthWriteMask.Zero;

                nativeDescription.IsStencilEnabled = description.StencilEnable;
                nativeDescription.StencilReadMask  = description.StencilMask;
                nativeDescription.StencilWriteMask = description.StencilWriteMask;

                nativeDescription.FrontFace.FailOperation      = (SharpDX.Direct3D11.StencilOperation)description.FrontFace.StencilFail;
                nativeDescription.FrontFace.PassOperation      = (SharpDX.Direct3D11.StencilOperation)description.FrontFace.StencilPass;
                nativeDescription.FrontFace.DepthFailOperation = (SharpDX.Direct3D11.StencilOperation)description.FrontFace.StencilDepthBufferFail;
                nativeDescription.FrontFace.Comparison         = (SharpDX.Direct3D11.Comparison)description.FrontFace.StencilFunction;

                nativeDescription.BackFace.FailOperation      = (SharpDX.Direct3D11.StencilOperation)description.BackFace.StencilFail;
                nativeDescription.BackFace.PassOperation      = (SharpDX.Direct3D11.StencilOperation)description.BackFace.StencilPass;
                nativeDescription.BackFace.DepthFailOperation = (SharpDX.Direct3D11.StencilOperation)description.BackFace.StencilDepthBufferFail;
                nativeDescription.BackFace.Comparison         = (SharpDX.Direct3D11.Comparison)description.BackFace.StencilFunction;

                return(nativeDescription);
            }