本節包含壓縮紋理格式內部組織的相關信息。 您不需要這些詳細數據來使用壓縮紋理,因為您可以使用 D3DX 函式來回轉換壓縮格式。 不過,如果您想要直接在壓縮表面數據上作,這項資訊會很有用。
Direct3D 會使用壓縮格式,將紋理對應分割成 4x4 紋素區塊。 如果紋理不包含透明度 - 不透明 - 或透明度是由 1 位 Alpha 指定,則 8 位元組區塊代表紋理地圖區塊。 如果紋理對應包含透明紋素,則使用Alpha色板,則16位元組區塊代表它。
- 不透明和 1 位 Alpha 紋理 (Direct3D 9)
- 使用 Alpha 色板 紋理 (Direct3D 9)
任何單一紋理都必須指定其數據會儲存為每組 16 個材質的 64 或 128 位。 如果 64 位區塊-也就是 DXT1 格式 - 用於紋理,則有可能在同一個紋理內以每個區塊為基礎混合不透明和 1 位 Alpha 格式。 換句話說,會針對16個紋素的每個區塊執行不帶正負號整數大小color_0和color_1的比較。
使用 128 位區塊時,必須在整個紋理的明確(DXT2 或 DXT3 格式)或插補模式 (FORMAT DXT4 或 DXT5) 中指定 Alpha 色板。 與色彩一樣,選取插補模式時,可以逐區塊使用八個插補 Alpha 或六個插補 Alpha 模式。 同樣地,alpha_0和alpha_1的大小比較是以區塊為基礎進行唯一的。
DXTn 格式的音調與 DirectX 7.0 中傳回的音調不同。 音調現在以位元組為單位來測量(而不是區塊)。 例如,如果您的寬度為 16,則您會有四個區塊的間距(DXT1 為 4*8,DXT2-5 則為 4*16)。
相關主題