IDirect3DDevice9Ex::CheckResourceResidency 方法 (d3d9.h)
檢查資源的陣列,以判斷它們是否會在 Draw 時間造成大型停頓,因為系統必須讓資源能夠存取 GPU。
語法
HRESULT CheckResourceResidency(
[in] IDirect3DResource9 **pResourceArray,
[in] UINT32 NumResources
);
參數
[in] pResourceArray
類型: IDirect3DResource9**
IDirect3DResource9指標的陣列,指出要檢查的資源。
[in] NumResources
類型: UINT32
值,表示傳遞至 pResourceArray 參數的資源數目上限為 65535。
傳回值
類型: HRESULT
如果所有資源都位於 GPU 可存取的記憶體中,方法會傳回S_OK。 系統可能需要執行重新對應作業來升級資源,但不需要複製資料。
如果沒有包含資源的配置位於磁片上,但至少有一個配置不在 GPU 存取的記憶體中,此方法會傳回S_RESIDENT_IN_SHARED_MEMORY。 系統可能需要執行複本來升級資源。
如果至少一個包含資源的配置位於磁片上,這個方法會傳回S_NOT_RESIDENT。 系統可能需要執行複本來升級資源。
備註
此 API 不會超過落地的合理猜測,因為資源可能會在應用程式使用時降級。
預期的使用模式如下所示。 如果應用程式判斷一組資源未存在,則應用程式會取代較低的 LOD 版本資源,並繼續轉譯。 視訊記憶體管理員 API 提供一項功能,可讓應用程式表達希望讓這些較低 LOD 資源更容易留在 GPU 可存取的記憶體中。 如果是,應用程式必須負責建立、填滿並終結這些較低 LOD 版本。
當落地檢查指出資源不在 GPU 存取記憶體中時,應用程式也需要開始升級較高 LOD 版本。 由於每個進程鎖定存在於核心模式中,因此效能效能實作會繁衍個別的進程,其唯一的作業是升級資源。 應用程式會透過 共用資源 共用介面 API 在兩個進程之間通訊資源識別,並透過 SetPriority加以升級。
需求
目標平台 | Windows |
標頭 | d3d9.h |
程式庫 | D3D9.lib |