點、雙線性、三線性和各向異性紋理篩選變異
覆寫適當的紋理取樣器上的篩選模式。
解譯
不同的紋理取樣方法具有不同的效能成本和影像品質。 若要增加成本 (以及增加視覺品質),篩選模式為:
點篩選 (花費最少,視覺品質最差)
雙線性篩選
三線性篩選
非等向性篩選 (花費最多,視覺品質最佳)
如果每個變異的效能成本很大,或因較密集的篩選模式而增加,您可以衡量其成本與其增加的影像品質。 基於您的評估,您可能會接受額外的效能成本以增加視覺品質,也可能會接受較差的視覺品質以達到較高的畫面播放速率,或回收您可能以其他方式使用的效能。
如果您發現不論篩選模式為何,效能成本都很少或十分穩定 (例如,您設為目標的 GPU 有足夠的著色器產出和記憶體頻寬時),請考慮使用非等向性篩選,來達到您應用程式中的最佳影像品質。
備註
這些變異會覆寫 ID3D11DeviceContext::PSSetSamplers 呼叫上的取樣器狀態,而在此呼叫中,應用程式所提供之取樣器的篩選模式為下列其中一項:
D3D11_FILTER_MIN_MAG_MIP_POINT
D3D11_FILTER_MIN_MAG_POINT_MIP_LINEAR
D3D11_FILTER_MIN_POINT_MAG_LINEAR_MIP_POINT
D3D11_FILTER_MIN_POINT_MAG_MIP_LINEAR
D3D11_FILTER_MIN_LINEAR_MAG_MIP_POINT
D3D11_FILTER_MIN_LINEAR_MAG_POINT_MIP_LINEAR
D3D11_FILTER_MIN_MAG_LINEAR_MIP_POINT
D3D11_FILTER_MIN_MAG_MIP_LINEAR
D3D11_FILTER_ANISOTROPIC
在點紋理篩選變異中,應用程式所提供的篩選模式會取代為 D3D11_FILTER_MIN_MAG_MIP_POINT;在雙線性紋理篩選變異中,則會取代為 D3D11_FILTER_MIN_MAG_LINEAR_MIP_POINT;而在三線性紋理篩選變異中,則會取代為 D3D11_FILTER_MIN_MAG_MIP_LINEAR。
在非等向性紋理篩選變異中,應用程式所提供的篩選模式會取代為 D3D11_FILTER_ANISOTROPIC,而且「最大非等向性」會設定為 16。
限制
在 Direct3D 中,功能層級 9.1 會指定最大非等向性為 2x。 因為非等向性紋理篩選變異嘗試以獨佔方式使用 16x 非等向性,所以在功能層級 9.1 裝置上執行畫面格分析時,播放會失敗。 受此限制影響的現代裝置包括 ARM Surface RT 和 Surface 2 Windows 平板電腦。 還是可以在一些電腦上發現的較舊型 GPU 也是會受到影響,但是它們已被廣泛地視為過時,且漸漸地不常見。
範例
使用與下列類似的程式碼,即可重現點紋理篩選變異:
D3D11_SAMPLER_DESC sampler_description;
// ... other sampler description setup ...
sampler_description.Filter = D3D11_FILTER_MIN_MAG_MIP_POINT;
d3d_device->CreateSamplerState(&sampler_desc, &sampler);
d3d_context->PSSetSamplers(0, 1, &sampler
使用與下列類似的程式碼,即可重現雙線性紋理篩選變異:
D3D11_SAMPLER_DESC sampler_description;
// ... other sampler description setup ...
sampler_description.Filter = D3D11_FILTER_MIN_MAG_LINEAR_MIP_POINT;
d3d_device->CreateSamplerState(&sampler_desc, &sampler);
d3d_context->PSSetSamplers(0, 1, &sampler
使用與下列類似的程式碼,即可重現三線性紋理篩選變異:
D3D11_SAMPLER_DESC sampler_description;
// ... other sampler description setup ...
sampler_description.Filter = D3D11_FILTER_MIN_MAG_MIP_LINEAR;
d3d_device->CreateSamplerState(&sampler_desc, &sampler);
d3d_context->PSSetSamplers(0, 1, &sampler
使用與下列類似的程式碼,即可重現非等向性紋理篩選變異:
D3D11_SAMPLER_DESC sampler_description;
// ... other sampler description setup ...
sampler_description.Filter = D3D11_FILTER_ANISOTROPIC;
sampler_description.MaxAnisotropy = 16;
d3d_device->CreateSamplerState(&sampler_desc, &sampler);
d3d_context->PSSetSamplers(0, 1, &sampler