OSDN Git Service

#32713 初コミット。SVNrev567時点での、ファイルはbranch/140707(ReBuild XGVersion)から移行したもの。
[dtxmaniaxg-verk/dtxmaniaxg-verk-git.git] / SlimDXc_Jun2010(VC++2008) / source / direct3d11 / DepthStencilStateDescription11.h
1 /*
2 * Copyright (c) 2007-2010 SlimDX Group
3
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:
10
11 * The above copyright notice and this permission notice shall be included in
12 * all copies or substantial portions of the Software.
13
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
20 * THE SOFTWARE.
21 */
22 #pragma once
23
24 #include "DepthStencilOperationDescription11.h"
25 #include "Enums11.h"
26
27 namespace SlimDX
28 {
29         namespace Direct3D11
30         {
31                 /// <summary>
32                 /// Provides a description for depth-stencil state objects.
33                 /// </summary>
34                 /// <unmanaged>D3D11_DEPTH_STENCIL_DESC</unmanaged>
35                 public value class DepthStencilStateDescription : System::IEquatable<DepthStencilStateDescription>
36                 {
37                 private:
38                         bool m_DepthEnable;
39                         Direct3D11::DepthWriteMask m_DepthWriteMask;
40                         Comparison m_DepthFunc;
41                         bool m_StencilEnable;
42                         System::Byte m_StencilReadMask;
43                         System::Byte m_StencilWriteMask;
44                         DepthStencilOperationDescription m_FrontFace;
45                         DepthStencilOperationDescription m_BackFace;
46
47                 internal:
48                         DepthStencilStateDescription( const D3D11_DEPTH_STENCIL_DESC& description );
49                         
50                         D3D11_DEPTH_STENCIL_DESC CreateNativeVersion();
51                         
52                 public:
53                         /// <summary>
54                         /// Gets or sets a value indicating whether depth testing is enabled.
55                         /// </summary>
56                         property bool IsDepthEnabled
57                         {
58                                 bool get();
59                                 void set( bool value );
60                         }
61
62                         /// <summary>
63                         /// Gets or sets a write mask identifying the portion of the depth-stencil buffer that can be modified by depth data.
64                         /// </summary>
65                         property Direct3D11::DepthWriteMask DepthWriteMask
66                         {
67                                 Direct3D11::DepthWriteMask get();
68                                 void set( Direct3D11::DepthWriteMask value );
69                         }
70
71                         /// <summary>
72                         /// A function that compares depth data against existing data in the buffer.
73                         /// </summary>
74                         property Comparison DepthComparison
75                         {
76                                 Comparison get();
77                                 void set( Comparison value );
78                         }
79
80                         /// <summary>
81                         /// Gets or sets a value indicating whether stencil testing is enabled.
82                         /// </summary>
83                         property bool IsStencilEnabled
84                         {
85                                 bool get();
86                                 void set( bool value );
87                         }
88
89                         /// <summary>
90                         /// Gets or sets a read mask identifying the portion of the depth-stencil buffer that can be read for stencil data.
91                         /// </summary>
92                         property System::Byte StencilReadMask
93                         {
94                                 System::Byte get();
95                                 void set( System::Byte value );
96                         }
97
98                         /// <summary>
99                         /// Gets or sets a write mask identifying the portion of the depth-stencil buffer that can be modified by stencil data.
100                         /// </summary>
101                         property System::Byte StencilWriteMask
102                         {
103                                 System::Byte get();
104                                 void set( System::Byte value );
105                         }
106
107                         /// <summary>
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.
109                         /// </summary>
110                         property DepthStencilOperationDescription FrontFace
111                         {
112                                 DepthStencilOperationDescription get();
113                                 void set( DepthStencilOperationDescription value );
114                         }
115
116                         /// <summary>
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.
118                         /// </summary>
119                         property DepthStencilOperationDescription BackFace
120                         {
121                                 DepthStencilOperationDescription get();
122                                 void set( DepthStencilOperationDescription value );
123                         }
124
125                         /// <summary>
126                         /// Tests for equality between two objects.
127                         /// </summary>
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 );
132
133                         /// <summary>
134                         /// Tests for inequality between two objects.
135                         /// </summary>
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 );
140
141                         /// <summary>
142                         /// Returns the hash code for this instance.
143                         /// </summary>
144                         /// <returns>A 32-bit signed integer hash code.</returns>
145                         virtual int GetHashCode() override;
146
147                         /// <summary>
148                         /// Returns a value that indicates whether the current instance is equal to a specified object. 
149                         /// </summary>
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;
153
154                         /// <summary>
155                         /// Returns a value that indicates whether the current instance is equal to the specified object. 
156                         /// </summary>
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 );
160
161                         /// <summary>
162                         /// Determines whether the specified object instances are considered equal. 
163                         /// </summary>
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 );
169                 };
170         }
171 };