다음을 통해 공유


IDirect3DDevice9Ex::CheckResourceResidency 메서드(d3d9.h)

리소스 배열을 확인하여 시스템이 리소스 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를 통해 두 프로세스 간에 리소스 ID를 전달하고 SetPriority를 통해 승격합니다.

요구 사항

   
대상 플랫폼 Windows
헤더 d3d9.h
라이브러리 D3D9.lib

추가 정보

IDirect3DDevice9Ex