采样状态对象
1. 采用状态对象有什么用?
采样状态描述用于描述纹理贴图的采样方式。一个采样状态对象允许我们访问一个纹理的采样状态信息。后面我们看采样状态描述结构体就知道有哪些内容可以描述了。
2. 采样状态可以描述哪些内容?
我们来看采样状态描述结构体D3D11_SAMPLER_DESC有哪些成员:
- Filter,它指定被采样的纹理怎样过滤。纹理过滤描述从源数据怎样被读取和联合,使得用于着色器。过滤能够提升画质但是在纹理采样时会有更多的性能开销,因为一些过滤类型是由于读取和结合多个纹理元素值来产生一个在着色器中看到的单一的颜色值。下面会详细介绍。
- AddressU,纹理寻址模式。下面会详细介绍。
- AddressU,纹理寻址模式。下面会详细介绍。
- AddressW,纹理寻址模式。下面会详细介绍。
- MipLODBias,用于 MIP 的级别细节(level-of-detail,简称 LOD)偏移。该值是一个通过 Direct3D 使用的 MIP 级别机制的偏移量。例如,如果 Direct3D 指定使用第 2 级别的 MIP 并且偏移量为 3,则实际上 MIP 使用的是第 5 级别。
- MaxAnisotropy,最大各向异性值,用于各向异性过滤和比较函数。该值范围是 1-16 之间的整数,它不用于点和双线性过滤。
- ComparisonFunc, COMPARISON函数的返回值用于判定贴图过滤标识的比较。比较标识在D3D11_COMPARISON_FUNC 中指定,其比较状态的本质是比较两个值之间的等于,大于小于关系。
- BorderColor,如果贴图地址模式使用了D3D11_TEXTURE_ADDRESS_BORDER,这个成员就可以指定颜色值(RGBA值必须在0~1)。
- MinLOD,指定Mip最小级别。
- MinLOD,指定Mip最大级别。例如,如果最大值指定为 1,那么级别为 0 的 MIP纹理就不会被访问到(注意级别为 0 的 MIP 就是分辨率最高的纹理)。
3. Filter成员如何填充?
在 Direct3D 1