產生 MIP 地圖紋理的子層級
顯示驅動程式會藉由設定DDCORECAPS結構的dwCaps2成員DDCAPS2_CANAUTOGENMIPMAP位,來指出自動產生 MIP 地圖紋理的子層級。 驅動程式會在DD_HALINFO結構的ddCaps 成員中指定這個 DDCORECAPS結構。 驅動程式的 DrvGetDirectDrawInfo 函式會傳回DD_HALINFO。 顯示驅動程式也會指出特定表面格式是否支援藉由為格式設定DDPIXELFORMAT結構的dwOperations成員中的 D3DFORMAT_OP_AUTOGENMIPMAP 旗標,來自動產生子層級。
建立紋理表面時,Direct3D 執行時間會設定 DDSCAPSEX (DDSCAPS2) 結構的dwCaps3成員DDSCAPS3_AUTOGENMIPMAP位,以指出可以自動產生此紋理的 MIP 對應子層級。 如果 Direct3D 會指示某些紋理自動產生其 MIP 對應子層級,而某些紋理不會自動產生,驅動程式只能在這些紋理上執行 blit 作業 (D3DDP2OP_TEXBLT) ,如下列案例所述:
驅動程式無法從自動產生 MIP 的來源紋理中擷取到沒有的目的地紋理。
如果驅動程式從未自動產生 MIP 的來源紋理 Blits 對應至目的地紋理,則驅動程式只會將最上層比對層級閃爍。 來源紋理中的子層級會被忽略。 可以產生目的地子層級。
同樣地,如果驅動程式從來源 Blits 到同時自動產生 MIP 對應的目的地紋理,則驅動程式只會將最上層比對層級閃爍。 來源紋理中的子層級會被忽略。 可以產生目的地子層級。
若要產生 MIP 地圖紋理的子層級,驅動程式會收到D3DDP2OP_GENERATEMIPSUBLEVELS命令以及 D3DHAL_DP2GENERATEMIPSUBLEVELS 結構。 若要接收此命令,紋理的介面格式必須公開D3DFORMAT_OP_AUTOGENMIPMAP旗標。
對於 驅動程式管理的資源,當驅動程式收回並取代視訊記憶體中的資源時,驅動程式必須使用最後一個設定的篩選類型來自動產生子層級。 因為 Direct3D 不會控制資源的收回和取代,所以 Direct3D 不會將D3DDP2OP_GENERATEMIPSUBLEVELS命令傳送至驅動程式。
Direct3D 執行時間無法呼叫驅動程式的 DdLock 函式,或使用任何其他 DDI 來存取自動產生 MIP 對應紋理的子層級。 這表示自動產生之 MIP 對應紋理的子層級,例如輕量型 MIP 對應紋理,是「隱含」,而且驅動程式可以視需要指定。 不需要驅動程式即可指定「完整」表面資料結構。 不過請注意,Direct3D 必須能夠呼叫驅動程式的 DdLock 或 DdBlt 函式、傳送D3DDP2OP_BLT命令,或使用任何其他 DDI (來進行 驅動程式管理的紋理、動態紋理或廠商特定的格式,只) 存取自動產生 MIP 對應紋理的最上層。
意見反應
https://aka.ms/ContentUserFeedback。
即將登場:在 2024 年,我們將逐步淘汰 GitHub 問題作為內容的意見反應機制,並將它取代為新的意見反應系統。 如需詳細資訊,請參閱:提交並檢視相關的意見反應