Direct3D 9 (壓縮紋理資源)

紋理貼圖為繪製在三維圖形上的數位化影像,用來增加更多視覺上的細節。 他們在點陣化的過程中對應至這些圖形之上,並且整個過程可能會取用大量的系統匯流排及記憶體。 若要減少紋理所使用的記憶體,Direct3D 支援壓縮紋理表面。 某些 Direct3D 裝置原生支援壓縮紋理表面。 在這類裝置上,當您建立了一個壓縮表面並且將資料載入其中,該表面即可像任何其他的紋理表面一樣用於 Direct3D 之中。 Direct3D 將會在該紋理對應至 3D 物件之上時,對其進行解壓縮。

儲存效率與紋理壓縮

所有紋理壓縮格式都是二的乘冪。 雖然這並不表示紋理一定是矩形,但實際上紋理的 x 值和 y 值的確都是二的乘冪。 例如:一個原本是 512 x 128 位元組的紋理,在下一個 Mipmapping 將會縮小至 256 x 64,並且在每個層級以 2 的乘冪遞減。 當紋理在較低的層級被篩選至 16 x 2 或 8 x 1 時,將會有未充分利用的位元存在,因為壓縮區塊一律都是 4 x 4 的材質區塊。 未使用的區塊部分將會獲得填補。 雖然在最低的層級時會有未充分利用的位元,整體增益仍然相當可觀。 理論上,最差的情況便是 2K x 1 的紋理 (2⁰ 乘冪)。 在這種情況下,每一區塊只有一列像素獲得編碼,區塊的其餘部分都將不會被使用到。

在單一紋理中混合格式

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

使用 128 位區塊之後,必須以明確 (格式 DXT2 和 DXT3) 或插補模式 (整個紋理的 DXT4 和 DXT5) 來指定 Alpha 色板。 如同色彩,當選取插補模式 (DXT4 和 DXT5 格式) 時,可以逐區塊使用八個插補 Alpha 或六個插補 Alpha 模式。 同樣地,Alpha_0和Alpha_1的大小比較會以區塊方式逐一完成。

Direct3D 針對用於 3D 模型貼圖的表面,提供了壓縮的服務。 本章節提供了建立和管理壓縮紋理表面中資料的相關資訊。

資訊包含在下列主題中。

Direct3D 紋理