共用方式為


壓縮紋理資源

紋理對應是在立體圖形上繪製的數位化影像,可增添視覺化細節。 它們會於點陣化期間對應至這些形狀,而該程序可能會使用大量的系統匯流排和記憶體。 為了減少紋理所使用的記憶體數量,Direct3D 可支援紋理表面壓縮。 部分 Direct3D 裝置可原生支援壓縮後的紋理表面。 在這類裝置上,當您已建立壓縮表面並將資料載入其中時,介面就可以像任何其他紋理表面一樣在 Direct3D 中使用。 當紋理對應到 3D 物件時,Direct3D 會處理解壓縮。

儲存效率和紋理壓縮

所有紋理壓縮格式都是 2 的冪。 雖然這並不意味著紋理一定是正方形,但它確實意味著 x 和 y 都是 2 的冪。 例如,如果紋理最初為 512 x 128 位元組,則下一個 mipmap 將是 256 x 64 等等,每個層級都會減少 2 的冪。 較低層級的紋理會篩選為 16 x 2 和 8 x 1,因此會浪費位元,因為壓縮區塊一律是 4 x 4 個紋素區塊。 區塊的未使用部分會填補。

雖然在最低層級上浪費了位元,但整體收益仍然很大。 最壞的情況是,理論上,一個2K x 1紋理 (2⁰ 冪)。 在此,每個區塊僅對(單一資料列像素進行編碼,而區塊的其餘部分未被使用。

在單一紋理中混合格式

請務必注意,任何單一紋理都必須指定其資料會儲存為每組 16 個紋素的 64 或 128 位元。 如果 64 位元區塊,也就是區塊壓縮格式 BC1,用於紋理,則有可能在同一個紋理內以每個區塊為基礎混合不透明和 1 位元 Alpha 格式。 換句話說,會針對 16 個紋素的每個區塊執行不帶符號整數大小 color_0 和 color_1 的比較。

一旦使用 128 位元區塊後,整個紋理必須以明確 (格式 BC2) 或插補模式 (格式 BC3) 指定 Alpha 色板。 與色彩一樣,選取插補模式 (格式 BC3) 時,可以逐區塊使用八個插補 Alpha 或六個插補 Alpha 模式。 同樣地,alpha_0 和 alpha_1 的大小比較是在逐塊的基礎上獨特完成的。

Direct3D 提供壓縮用於紋理化 3D 模型的表面的服務。 本節提供在壓縮紋理介面中建立和操作資料的相關資訊。

本節內容

主題 說明

不透明和 1 位元 Alpha 紋理

紋理格式 BC1 適用於不透明或具採用單一透明色彩的紋理。

具有 Alpha 色板的紋理

有兩種方法可用來編碼紋理對應,以營造更複雜的透明度。 在每個案例中,已描述的 64 位元區塊前方會存在描述透明度的區塊。 透明度會透過兩種方式表示:使用 4x4 點陣圖表示,每一像素 4 位元 (明確編碼),或是具有較少位元和線性插補 (與色彩編碼相似)。

區塊壓縮

區塊壓縮是降低紋理大小和記憶體使用量的遺失紋理壓縮技術,可提升效能。 區塊壓縮紋理可以小於每色 32 位元的紋理。

壓縮紋理格式

本節包含壓縮紋理格式內部組織的相關資訊。 您不需要這些詳細資料來使用壓縮紋理,因為您可以使用 Direct3D 函數來回轉換壓縮格式。 不過,如果您想要直接在壓縮表面資料上操作,這項資訊會很有用。

 

紋理