共用方式為


紋理篩選 (Direct3D 9)

當 Direct3D 轉譯基本類型時,它會將 3D 基本類型對應到 2D 畫面。 如果圖元具有紋理,Direct3D 必須使用該紋理來產生圖元的 2D 渲染圖像中每個像素的顏色。 對於螢幕上原始圖形的每個像素,它必須從紋理中取得色彩值。 此程序稱為紋理篩選。

執行紋理篩選作業時,所使用的紋理通常也會放大或縮小。 換句話說,它被轉換成更基本的影像,這個影像比本身還要大或小。 當紋理被放大時,可能會導致許多像素映射到一個紋素。 結果可以是厚重的外觀。 紋理的縮小通常表示單個像素會對應到許多紋素。 產生的影像可能會模糊或出現鋸齒化。 若要解決這些問題,必須混合紋素的顏色,才能獲得像素的顏色。

Direct3D 簡化了紋理篩選的複雜程式。 它提供三種類型的紋理篩選 - 線性篩選、非等性篩選和Mipmap篩選。 如果您選取無紋理篩選,Direct3D 會使用稱為最接近點取樣的技術。

每種紋理篩選類型都有優點和缺點。 例如,線性紋理過濾可能會產生鋸齒狀邊緣或最終圖像中的區塊外觀。 不過,它是紋理篩選的計算低負荷方法。 使用 mipmap 篩選通常會產生最佳結果,尤其是在與非等性篩選結合時。 不過,它需要 Direct3D 支援的大部分技術記憶體。

使用紋理介面指標的應用程式應該呼叫 IDirect3DDevice9::SetSamplerState 方法來設定目前的紋理篩選方法。 將第一個參數的值設定為您選取紋理篩選方法的整數索引編號 (0-7)。 傳遞 D3DSAMP_MAGFILTER、D3DSAMP_MINFILTER 或 D3DSAMP_MIPFILTER 作為第二個參數,以設定放大篩選、縮小篩選或多重貼圖篩選。 在第三個參數中,傳遞 D3DTEXTUREFILTERTYPE 列舉型別的 成員作為值。

本節提供 Direct3D 支援的紋理篩選方法。 它會組織成下列主題。

注意

雖然 D3DRENDERSTATETYPE 列舉類型中存在的紋理篩選轉譯狀態會由紋理階段狀態取代,但是 IDirect3DDevice9::SetRenderState,而不是 IDirect3DDevice2 版本,如果您嘗試使用它們,則不會失敗。 相反地,系統會將這些轉譯狀態的效果對應至多文本串聯階段的第一個階段,階段0。 應用程式不應將舊版轉譯狀態與其對應的紋理階段狀態混合在一起,因為可能發生無法預測的結果。

 

Direct3D 紋理