Paradox Game Engine  v1.0.0 beta06
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Events Macros Pages
DepthStencilState.Direct3D.cs
Go to the documentation of this file.
1 // Copyright (c) 2014 Silicon Studio Corp. (http://siliconstudio.co.jp)
2 // This file is distributed under GPL v3. See LICENSE.md for details.
3 #if SILICONSTUDIO_PARADOX_GRAPHICS_API_DIRECT3D
4 using System;
5 
6 namespace SiliconStudio.Paradox.Graphics
7 {
8  /// <summary>
9  /// Contains depth-stencil state for the device.
10  /// </summary>
11  public partial class DepthStencilState
12  {
13  /// <summary>
14  /// Initializes a new instance of the <see cref="DepthStencilState"/> class.
15  /// </summary>
16  /// <param name="depthEnable">if set to <c>true</c> [depth enable].</param>
17  /// <param name="depthWriteEnable">if set to <c>true</c> [depth write enable].</param>
18  /// <param name="name">The name.</param>
19  private DepthStencilState(GraphicsDevice device, DepthStencilStateDescription depthStencilStateDescription)
20  : base(device)
21  {
22  Description = depthStencilStateDescription;
23 
24  CreateNativeDeviceChild();
25  }
26 
27  /// <inheritdoc/>
28  protected internal override void OnDestroyed()
29  {
30  base.OnDestroyed();
31 
32  DestroyImpl();
33  }
34 
35  /// <inheritdoc/>
36  protected internal override bool OnRecreate()
37  {
38  base.OnRecreate();
39 
40  CreateNativeDeviceChild();
41  return true;
42  }
43 
44  private void CreateNativeDeviceChild()
45  {
46  SharpDX.Direct3D11.DepthStencilStateDescription nativeDescription;
47 
48  nativeDescription.IsDepthEnabled = Description.DepthBufferEnable;
49  nativeDescription.DepthComparison = (SharpDX.Direct3D11.Comparison)Description.DepthBufferFunction;
50  nativeDescription.DepthWriteMask = Description.DepthBufferWriteEnable ? SharpDX.Direct3D11.DepthWriteMask.All : SharpDX.Direct3D11.DepthWriteMask.Zero;
51 
52  nativeDescription.IsStencilEnabled = Description.StencilEnable;
53  nativeDescription.StencilReadMask = Description.StencilMask;
54  nativeDescription.StencilWriteMask = Description.StencilWriteMask;
55 
56  nativeDescription.FrontFace.FailOperation = (SharpDX.Direct3D11.StencilOperation)Description.FrontFace.StencilFail;
57  nativeDescription.FrontFace.PassOperation = (SharpDX.Direct3D11.StencilOperation)Description.FrontFace.StencilPass;
58  nativeDescription.FrontFace.DepthFailOperation = (SharpDX.Direct3D11.StencilOperation)Description.FrontFace.StencilDepthBufferFail;
59  nativeDescription.FrontFace.Comparison = (SharpDX.Direct3D11.Comparison)Description.FrontFace.StencilFunction;
60 
61  nativeDescription.BackFace.FailOperation = (SharpDX.Direct3D11.StencilOperation)Description.BackFace.StencilFail;
62  nativeDescription.BackFace.PassOperation = (SharpDX.Direct3D11.StencilOperation)Description.BackFace.StencilPass;
63  nativeDescription.BackFace.DepthFailOperation = (SharpDX.Direct3D11.StencilOperation)Description.BackFace.StencilDepthBufferFail;
64  nativeDescription.BackFace.Comparison = (SharpDX.Direct3D11.Comparison)Description.BackFace.StencilFunction;
65 
66  NativeDeviceChild = new SharpDX.Direct3D11.DepthStencilState(NativeDevice, nativeDescription);
67  }
68  }
69 }
70 #endif