共用方式為


自動產生 Mipmap (Direct3D 9)

您現在可以自動建立 Mipmap,這是一系列紋理,每個紋理都會篩選成不同的解析度。 Mipmap 通常用來在轉譯時提供不同層級的詳細資料。 在紋理建立時間中自動產生 Mipmap 可以利用硬體篩選,因為 Mipmap 位於視訊記憶體中。

若要自動產生 mipmap,請在呼叫CreateTexture之前,先設定新的使用量D3DUSAGE_AUTOGENMIPMAP。 從這個點開始的子層級產生對應用程式而言是完全透明的。 只有最上層紋理層級可供應用程式存取;無法存取紋理子層級,因為只有在驅動程式需要時才會建立它們。 如果子層級產生可能需要很多時間,請使用 GenerateMipSubLevels 來提示驅動程式,指出它應該一次產生適合應用程式的子層級。

Mipmap 篩選

SetAutoGenFilterType 會在自動產生期間控制篩選品質。 變更篩選類型會變更 mipmap 子層級,並使其重新產生。 使用 GetAutoGenFilterType 來取得目前的篩選類型。 預設篩選類型為 D3DTEXF_LINEAR。 如果驅動程式不支援線性篩選,篩選類型將會設定為D3DTEXF_POINT。

如果紋理不是以 D3DUSAGE_AUTOGENMIPMAP 建立,而且不會傳回任何失敗,則這些方法沒有任何作用。 驅動程式針對一般紋理篩選支援的所有篩選類型都支援自動產生,但D3DTEXF_NONE除外。 針對每個資源類型,驅動程式應該支援對應紋理、CubeTexture 和 volumetexture 篩選上限中報告的所有篩選類型。

若要檢查支援的篩選類型,請檢查 TextureFilterCaps 和/或 CubeTextureFilterCaps 成員 D3DCAPS9支援哪些上限。

Mipmap 支援

D3DUSAGE_AUTOGENMIPMAP 只是提示,而且在建立紋理期間或呼叫 CheckDeviceFormat 時,不會在任何裝置驅動程式介面上造成錯誤, (DDI) 類型。

當來源是自動產生的 mipmap,但目的地不是時,呼叫 UpdateTexture 是不合法的。 來源可以是非自動產生的 mipmap,而目的地可以是自動產生的 mipmap。 在此情況下,只會更新最上層比對層級。 所有其他來源子層級都會被忽略。 同樣地,自動產生來源和目的地時,只會更新最上層的相符層級。 系統會忽略來源中的子層級,並重新產生目的地子層級。

若要檢查是否支援自動產生 mipmap,請檢查是否已設定 D3DCAPS2_CANAUTOGENMIPMAP 。 如果是,請使用D3DUSAGE_AUTOGENMIPMAP呼叫CheckDeviceFormat。 如果傳回值D3D_OK,則保證會自動產生 mipmap。 如果傳回值D3DOK_NOAUTOGEN,這表示建立呼叫將會成功,但不會產生任何 Mipmap。

Direct3D 紋理