各向異性紋理過濾

各向異性紋理過濾

Microsoft® Direct3D®在渲染圖元時,要把三維圖元映射到二維螢幕上。如果圖元貼有紋理,那么Direct3D必須用該紋理給圖元在二維螢幕上對應的每個像素產生一個顏色。對於每個像素,Direct3D必須從紋理獲得一個顏色值,這個過程被稱為紋理過濾。在執行紋理過濾操作時,正在使用的紋理一般會被放大或縮小,換句話說,就是紋理被貼到比它大或比它小的圖元上。紋理放大會使多個像素映射到一個texel,得到的圖像可能會有馬賽克。紋理縮小會使一個像素映射到多個texel,得到的圖像可能會模糊不清或有鋸齒。要解決這些問題,必須在計算像素的顏色時對texel的顏色進行一些混合操作。

概述

Direct3D把複雜的紋理過濾過程簡化了,它給應用程式提供了三種類型的紋理過濾——線性過濾、各向異性過濾和mipmap過濾。如果應用程式不選擇以上三種紋理過濾,那么Direct3D使用一種被稱為最近點取樣的技術,因為三維物體表面與螢幕間的夾角而造成的紋理扭曲被稱為各向異性。當把一個各向異性的圖元所對應的像素映射到texel時,像素的形狀會被扭曲。Microsoft® Direct3D®根據像素被反向映射到紋理空間中的伸長率——也就是長度除以寬度——計量螢幕上像素的各向異性屬性。
為了提高渲染質量,應用程式可以把各向異性過濾與線性紋理過濾或Mipmap紋理過濾結合在一起使用。應用程式可以調用IDirect3DDevice9::SetSamplerState方法啟用各向異性紋理過濾,只需把第三個參數設為D3DTEXF_ANISOTROPIC即可。

設定方法

應用程式必須同時把degree of anisotropy設為大於一的值。可以調用IDirect3DDevice9::SetSamplerState方法設定這個值。第一個參數為0到7的紋理層索引值,把第二個參數設為D3DSAMP_MAXANISOTROPY,第三個參數為要設定的degree of anisotropy(譯註:原文為degree of isotropy)的值。
應用程式只需把degree of anisotropy(譯註:原文為degree of isotropy)設為一即可禁用各向異性過濾。要確定degree of anisotropy的允許範圍,可以檢查D3DCAPS9結構的MaxAnisotropy成員。

作用

於減少經各向異性過濾的紋理樣本的數目以確定關聯於一圖形片斷的一紋理值的技術。減少經各向異性過濾的紋理樣本的數目會減少讀取的紋理樣本的數目並簡化過濾計算。可程式旋鈕用於在紋理空間中縮短一像素的印跡,從而減少在各向異性過濾期間使用的紋理樣本的數目。這些旋鈕允許用戶確定改善的紋理圖性能與各向異性紋理過濾質量之間的一平衡。

相關詞條

相關搜尋

熱門詞條

聯絡我們