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