2 * Copyright (c) 2007-2010 SlimDX Group
4 * Permission is hereby granted, free of charge, to any person obtaining a copy
5 * of this software and associated documentation files (the "Software"), to deal
6 * in the Software without restriction, including without limitation the rights
7 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
8 * copies of the Software, and to permit persons to whom the Software is
9 * furnished to do so, subject to the following conditions:
11 * The above copyright notice and this permission notice shall be included in
12 * all copies or substantial portions of the Software.
14 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
15 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
16 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
17 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
18 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
19 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
24 #include "DepthStencilOperationDescription11.h"
32 /// Provides a description for depth-stencil state objects.
34 /// <unmanaged>D3D11_DEPTH_STENCIL_DESC</unmanaged>
35 public value class DepthStencilStateDescription : System::IEquatable<DepthStencilStateDescription>
39 Direct3D11::DepthWriteMask m_DepthWriteMask;
40 Comparison m_DepthFunc;
42 System::Byte m_StencilReadMask;
43 System::Byte m_StencilWriteMask;
44 DepthStencilOperationDescription m_FrontFace;
45 DepthStencilOperationDescription m_BackFace;
48 DepthStencilStateDescription( const D3D11_DEPTH_STENCIL_DESC& description );
50 D3D11_DEPTH_STENCIL_DESC CreateNativeVersion();
54 /// Gets or sets a value indicating whether depth testing is enabled.
56 property bool IsDepthEnabled
59 void set( bool value );
63 /// Gets or sets a write mask identifying the portion of the depth-stencil buffer that can be modified by depth data.
65 property Direct3D11::DepthWriteMask DepthWriteMask
67 Direct3D11::DepthWriteMask get();
68 void set( Direct3D11::DepthWriteMask value );
72 /// A function that compares depth data against existing data in the buffer.
74 property Comparison DepthComparison
77 void set( Comparison value );
81 /// Gets or sets a value indicating whether stencil testing is enabled.
83 property bool IsStencilEnabled
86 void set( bool value );
90 /// Gets or sets a read mask identifying the portion of the depth-stencil buffer that can be read for stencil data.
92 property System::Byte StencilReadMask
95 void set( System::Byte value );
99 /// Gets or sets a write mask identifying the portion of the depth-stencil buffer that can be modified by stencil data.
101 property System::Byte StencilWriteMask
104 void set( System::Byte value );
108 /// Specifies how to use the results of the depth test and the stencil test for pixels whose surface normal is facing towards the camera.
110 property DepthStencilOperationDescription FrontFace
112 DepthStencilOperationDescription get();
113 void set( DepthStencilOperationDescription value );
117 /// Specifies how to use the results of the depth test and the stencil test for pixels whose surface normal is facing away from camera.
119 property DepthStencilOperationDescription BackFace
121 DepthStencilOperationDescription get();
122 void set( DepthStencilOperationDescription value );
126 /// Tests for equality between two objects.
128 /// <param name="left">The first value to compare.</param>
129 /// <param name="right">The second value to compare.</param>
130 /// <returns><c>true</c> if <paramref name="left"/> has the same value as <paramref name="right"/>; otherwise, <c>false</c>.</returns>
131 static bool operator == ( DepthStencilStateDescription left, DepthStencilStateDescription right );
134 /// Tests for inequality between two objects.
136 /// <param name="left">The first value to compare.</param>
137 /// <param name="right">The second value to compare.</param>
138 /// <returns><c>true</c> if <paramref name="left"/> has a different value than <paramref name="right"/>; otherwise, <c>false</c>.</returns>
139 static bool operator != ( DepthStencilStateDescription left, DepthStencilStateDescription right );
142 /// Returns the hash code for this instance.
144 /// <returns>A 32-bit signed integer hash code.</returns>
145 virtual int GetHashCode() override;
148 /// Returns a value that indicates whether the current instance is equal to a specified object.
150 /// <param name="obj">Object to make the comparison with.</param>
151 /// <returns><c>true</c> if the current instance is equal to the specified object; <c>false</c> otherwise.</returns>
152 virtual bool Equals( System::Object^ obj ) override;
155 /// Returns a value that indicates whether the current instance is equal to the specified object.
157 /// <param name="other">Object to make the comparison with.</param>
158 /// <returns><c>true</c> if the current instance is equal to the specified object; <c>false</c> otherwise.</returns>
159 virtual bool Equals( DepthStencilStateDescription other );
162 /// Determines whether the specified object instances are considered equal.
164 /// <param name="value1">The first value to compare.</param>
165 /// <param name="value2">The second value to compare.</param>
166 /// <returns><c>true</c> if <paramref name="value1"/> is the same instance as <paramref name="value2"/> or
167 /// if both are <c>null</c> references or if <c>value1.Equals(value2)</c> returns <c>true</c>; otherwise, <c>false</c>.</returns>
168 static bool Equals( DepthStencilStateDescription% value1, DepthStencilStateDescription% value2 );