/// <summary>
        /// Constructs a new <see cref="DepthStencilStateDescription"/>. This describes a depth-stencil state with no stencil
        /// testing enabled.
        /// </summary>
        /// <param name="depthTestEnabled">Controls whether depth testing is enabled.</param>
        /// <param name="depthWriteEnabled">Controls whether new depth values are written to the depth buffer.</param>
        /// <param name="comparisonKind">The <see cref="Veldrid.ComparisonKind"/> used when considering new depth values.</param>
        public DepthStencilStateDescription(bool depthTestEnabled, bool depthWriteEnabled, ComparisonKind comparisonKind)
        {
            DepthTestEnabled  = depthTestEnabled;
            DepthWriteEnabled = depthWriteEnabled;
            DepthComparison   = comparisonKind;

            StencilTestEnabled = false;
            StencilFront       = default(StencilBehaviorDescription);
            StencilBack        = default(StencilBehaviorDescription);
            StencilReadMask    = 0;
            StencilWriteMask   = 0;
            StencilReference   = 0;
        }
        /// <summary>
        /// Constructs a new <see cref="DepthStencilStateDescription"/>. This describes a depth-stencil state with no stencil
        /// testing enabled.
        /// </summary>
        /// <param name="depthTestEnabled">Controls whether depth testing is enabled.</param>
        /// <param name="depthWriteEnabled">Controls whether new depth values are written to the depth buffer.</param>
        /// <param name="comparisonKind">The <see cref="ComparisonKind"/> used when considering new depth values.</param>
        /// <param name="stencilTestEnabled">Controls whether the stencil test is enabled.</param>
        /// <param name="stencilFront">Controls how stencil tests are handled for pixels whose surface faces towards the camera.</param>
        /// <param name="stencilBack">Controls how stencil tests are handled for pixels whose surface faces away from the camera.</param>
        /// <param name="stencilReadMask">Controls the portion of the stencil buffer used for reading.</param>
        /// <param name="stencilWriteMask">Controls the portion of the stencil buffer used for writing.</param>
        /// <param name="stencilReference">The reference value to use when doing a stencil test.</param>
        public DepthStencilStateDescription(
            bool depthTestEnabled,
            bool depthWriteEnabled,
            ComparisonKind comparisonKind,
            bool stencilTestEnabled,
            StencilBehaviorDescription stencilFront,
            StencilBehaviorDescription stencilBack,
            byte stencilReadMask,
            byte stencilWriteMask,
            uint stencilReference)
        {
            DepthTestEnabled  = depthTestEnabled;
            DepthWriteEnabled = depthWriteEnabled;
            DepthComparison   = comparisonKind;

            StencilTestEnabled = stencilTestEnabled;
            StencilFront       = stencilFront;
            StencilBack        = stencilBack;
            StencilReadMask    = stencilReadMask;
            StencilWriteMask   = stencilWriteMask;
            StencilReference   = stencilReference;
        }