D3D12_DEPTH_STENCIL_DESC1 结构体是 Direct3D 12 API 中用于描述深度模板状态的配置信息的扩展版本。相较于 D3D12_DEPTH_STENCIL_DESC,D3D12_DEPTH_STENCIL_DESC1 提供了额外的功能,支持样本掩码和遮挡测试。

以下是 D3D12_DEPTH_STENCIL_DESC1 结构体的定义:
typedef struct D3D12_DEPTH_STENCIL_DESC1 {
  BOOL                           DepthEnable;
  D3D12_DEPTH_WRITE_MASK         DepthWriteMask;
  D3D12_COMPARISON_FUNC          DepthFunc;
  BOOL                           StencilEnable;
  UINT8                          StencilReadMask;
  UINT8                          StencilWriteMask;
  D3D12_DEPTH_STENCILOP_DESC     FrontFace;
  D3D12_DEPTH_STENCILOP_DESC     BackFace;
  BOOL                           DepthBoundsTestEnable;
  BOOL                           ProgrammableSampleMaskEnable;
  UINT                           ConservativeRaster;
} D3D12_DEPTH_STENCIL_DESC1;

其中:

  •  DepthEnable 表示是否启用深度测试。

  •  DepthWriteMask 表示深度写入掩码,决定深度缓冲区是否可写。

  •  DepthFunc 表示深度测试的比较函数。

  •  StencilEnable 表示是否启用模板测试。

  •  StencilReadMask 和 StencilWriteMask 分别表示模板读取掩码和模板写入掩码。

  •  FrontFace 和 BackFace 是 D3D12_DEPTH_STENCILOP_DESC 结构,用于定义前后两个面的模板操作。

  •  DepthBoundsTestEnable 表示是否启用深度范围测试。

  •  ProgrammableSampleMaskEnable 表示是否启用可编程的样本掩码。

  •  ConservativeRaster 表示保守光栅化模式的设置,可以是 D3D12_CONSERVATIVE_RASTERIZATION_MODE 枚举中的一个值。


这个结构体可以在创建深度模板状态时使用,例如通过 ID3D12Device2::CreateDepthStencilState1 函数。创建深度模板状态对象后,它可以在管道状态中使用,以控制深度和模板测试的行为。


转载请注明出处:http://www.pingtaimeng.com/article/detail/25914/Win32 API/D3d12.h/D3D12_DEPTH_STENCIL_DESC1