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 |
Library | D3D9.lib |