共用方式為


產生 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 必須能夠呼叫驅動程式的 DdLockDdBlt 函式、傳送D3DDP2OP_BLT命令,或使用任何其他 DDI (來進行 驅動程式管理的紋理、動態紋理或廠商特定的格式,只) 存取自動產生 MIP 對應紋理的最上層。