D3D12_STATIC_SAMPLER_DESC 结构体用于描述 Direct3D 12 中的静态采样器状态,该结构体定义在 D3d12.h 头文件中。静态采样器是在图形管道状态中定义的采样器状态,与根签名关联。以下是该结构体的定义:
typedef struct D3D12_STATIC_SAMPLER_DESC {
  D3D12_FILTER                     Filter;
  D3D12_TEXTURE_ADDRESS_MODE       AddressU;
  D3D12_TEXTURE_ADDRESS_MODE       AddressV;
  D3D12_TEXTURE_ADDRESS_MODE       AddressW;
  FLOAT                            MipLODBias;
  UINT                             MaxAnisotropy;
  D3D12_COMPARISON_FUNC            ComparisonFunc;
  D3D12_STATIC_BORDER_COLOR        BorderColor;
  FLOAT                            MinLOD;
  FLOAT                            MaxLOD;
  UINT                             ShaderRegister;
  UINT                             RegisterSpace;
  D3D12_SHADER_VISIBILITY          ShaderVisibility;
} D3D12_STATIC_SAMPLER_DESC;

  •  Filter: 采样过滤器,指定纹理采样时使用的过滤方式。

  •  AddressU, AddressV, AddressW: 分别指定纹理坐标的 U、V、W 分量的寻址模式。

  •  MipLODBias: Mip 层级的 LOD 偏移。

  •  MaxAnisotropy: 启用各向异性过滤时的最大各向异性值。

  •  ComparisonFunc: 比较函数,用于比较纹理采样的结果。

  •  BorderColor: 采样时超出纹理坐标范围时的边框颜色。

  •  MinLOD, MaxLOD: 采样的最小和最大 LOD 值。

  •  ShaderRegister: 着色器寄存器索引,指定采样器在着色器中的寄存器索引。

  •  RegisterSpace: 着色器寄存器空间。

  •  ShaderVisibility: 采样器在哪个着色器阶段可见。


这个结构体通常用于在创建图形管道状态对象时指定静态采样器的状态。以下是一个简单的示例:
D3D12_STATIC_SAMPLER_DESC samplerDesc = {};
samplerDesc.Filter = D3D12_FILTER_MIN_MAG_MIP_LINEAR;
samplerDesc.AddressU = D3D12_TEXTURE_ADDRESS_MODE_WRAP;
samplerDesc.AddressV = D3D12_TEXTURE_ADDRESS_MODE_WRAP;
samplerDesc.AddressW = D3D12_TEXTURE_ADDRESS_MODE_WRAP;
samplerDesc.ComparisonFunc = D3D12_COMPARISON_FUNC_LESS_EQUAL;
samplerDesc.MaxLOD = D3D12_FLOAT32_MAX;
samplerDesc.MaxAnisotropy = 1;
samplerDesc.BorderColor = D3D12_STATIC_BORDER_COLOR_OPAQUE_WHITE;
samplerDesc.ShaderRegister = 0;
samplerDesc.RegisterSpace = 0;
samplerDesc.ShaderVisibility = D3D12_SHADER_VISIBILITY_PIXEL;

在实际使用时,你需要根据具体的需求设置相应的采样器参数,并将这个结构体传递给创建图形管道状态对象的函数,如 ID3D12Device::CreateGraphicsPipelineState。确保参考 Direct3D 12 文档以获取更详细的信息。


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