PFND3D10DDI_RESOURCECOPY 콜백 함수(d3d10umddi.h)

ResourceCopy 함수는 전체 원본 리소스를 대상 리소스에 복사합니다.

구문

PFND3D10DDI_RESOURCECOPY Pfnd3d10ddiResourcecopy;

void Pfnd3d10ddiResourcecopy(
  D3D10DDI_HDEVICE unnamedParam1,
  D3D10DDI_HRESOURCE unnamedParam2,
  D3D10DDI_HRESOURCE unnamedParam3
)
{...}

매개 변수

unnamedParam1

hDevice [in]

디스플레이 디바이스(그래픽 컨텍스트)에 대한 핸들입니다.

unnamedParam2

hDstResource [in]

복사할 대상 리소스에 대한 핸들입니다.

unnamedParam3

hSrcResource [in]

복사할 원본 리소스에 대한 핸들입니다.

반환 값

없음

설명

드라이버는 pfnSetErrorCb 콜백 함수를 사용하여 오류 코드를 설정할 수 있습니다.

Microsoft Direct3D 런타임은 사용자 모드 표시 드라이버의 ResourceCopy 함수를 호출하여 지정된 원본 리소스에서 지정된 대상 리소스로 복사하도록 드라이버에 알릴 수 있습니다. 원본 및 대상 리소스는 동일한 리소스일 수 없습니다. 원본 리소스와 대상 리소스는 모두 동일한 유형의 리소스여야 하며 크기가 같아야 합니다. 두 리소스의 형식 형식(DXGI_FORMAT 형식 값)을 서로 캐스팅할 수 있어야 합니다. 원본 및 대상 리소스는 현재 매핑되지 않아야 합니다. 또한 리소스 만들기 플래그는 리소스가 복사 작업에 참여할 수 있는지 여부를 제한합니다.

D3DDDIERR_DEVICEREMOVED 경우를 제외하고 드라이버에 오류가 발생하지 않아야 합니다. 따라서 드라이버가 pfnSetErrorCb 함수를 호출할 때 D3DDDIERR_DEVICEREMOVED 경우를 제외하고 오류를 전달하는 경우 Direct3D 런타임은 오류가 중요하다고 결정합니다. 디바이스가 제거된 경우에도 드라이버는 D3DDDIERR_DEVICEREMOVED 반환할 필요가 없습니다. 그러나 디바이스 제거가 ResourceCopy 작업을 방해하는 경우(일반적으로 발생하지 않아야 하는) 드라이버는 D3DDDIERR_DEVICEREMOVED 반환할 수 있습니다.

참고 다음 섹션은 Microsoft Direct3D 버전 10.1 이상(즉, WINDOWS Vista SP1(서비스 팩 1) 이상 및 Windows Server 2008 이상)에만 적용됩니다.
 
드라이버는 복사 및 변환을 처리하는 switch 문을 포함할 수 있는 ResourceCopy 함수를 구현할 수 있습니다. 즉, 드라이버는 하나의 ResourceCopy를 구현할 수 있으며 D3D10_1DDI_DEVICEFUNCS pfnResourceCopy 멤버와 함께 ResourceCopy를 가리키도록 D3D10_1DDI_DEVICEFUNCS 구조체의 pfnResourceConvert 멤버를 설정할 수 있습니다. 그러나 성능을 향상시키기 위해 드라이버는 별도의 ResourceCopyResourceConvert 함수를 구현할 수 있습니다.

Direct3D 10.1 버전의 ResourceCopy는 드라이버의 CreateResource(D3D10) 함수를 호출하여 만든 원본 및 대상 리소스에 대한 D3D10DDIARG_CREATERESOURCEResourceDimension 멤버와 관련하여 Direct3D 10.0 버전과 주요 기능 차이가 있습니다. Direct3D 10.0 버전의 ResourceCopy의 경우 원본 및 대상 리소스에 대한 D3D10DDIARG_CREATERESOURCE ResourceDimension 멤버가 일치해야 합니다. Direct3D 10.1 버전의 ResourceCopy 를 사용하면 원본 및 대상 리소스에 대한 D3D10DDIARG_CREATERESOURCE ResourceDimension 멤버를 약간 완화할 수 있습니다. Direct3D 10.1 버전의 ResourceCopy 를 사용하면 TexCube 대상 리소스 또는 Tex2D 대상 리소스의 TexCube 원본 리소스에서 Tex2D 원본 리소스를 복사할 수 있습니다. 또한 리소스 수준에서 TexCube의 구분은 Direct3D 버전 10.1에서 사라집니다. Direct3D 10.1 버전의 ResourceCopy 는 TexCube를 복사할 수 있는지 여부만 나타냅니다. Direct3D 버전 10.0에서 리소스 복사, 여러 렌더링 대상의 유효성 검사 등(즉, 리소스 종류가 동일해야 하는 다양한 작업)에는 모두 리소스 종류를 고려하여 TexCube를 구분하는 것이 포함되었습니다. Direct3D 버전 10.1에서 런타임은 Tex2D만 확인할 수 있습니다.

다음 섹션에서는 복사 및 변환 조건을 나열합니다.

복사

복사를 위해 ResourceCopy 는 다음 조건을 사용하여 드라이버의 CreateResource(D3D10) 함수를 통해 원본 및 대상 리소스를 만들도록 합니다.

  • 대상 리소스가 D3D10DDIARG_CREATERESOURCE 구조의 Usage 멤버에 설정된 D3D10_DDI_USAGE_IMMUTABLE 값으로 만들어지지 않았습니다.
  • 원본 및 대상 리소스는 D3D10DDIARG_CREATERESOURCE ResourceDimension 멤버에서 동일한 값을 설정하여 동일한 리소스 종류 및 차원(버퍼, 1차원(1차원) 텍스처 등)으로 만들어졌습니다.
  • 원본 및 대상 리소스는 정확히 동일한 리소스의 일부가 아닙니다.
  • D3D10DDIARG_CREATERESOURCE Format 멤버에 지정된 각 원본 및 대상 리소스 형식은 동일한 무형식 그룹에 있습니다.
  • 원본 및 대상 리소스의 샘플 수와 품질 수준이 동일해야 합니다. 샘플 수가 같아야 하는 단일 샘플링 리소스를 제외하고.
ResourceCopy 는 하위 리소스가 현재 매핑되지 않도록 보장하지 않습니다.

변환

변환의 경우 ResourceCopy 는 다음 조건을 사용하여 드라이버의 CreateResource(D3D10) 함수를 통해 원본 및 대상 리소스를 만들도록 합니다.

  • 대상 리소스가 D3D10DDIARG_CREATERESOURCE 구조의 Usage 멤버에 설정된 D3D10_DDI_USAGE_IMMUTABLE 값으로 만들어지지 않았습니다.
  • 원본 및 대상 리소스는 D3D10DDIARG_CREATERESOURCE ResourceDimension 멤버에서 동일한 값을 설정하여 동일한 리소스 종류(버퍼, 1차원(1차원) 텍스처 등)로 만들어졌습니다.
  • 원본 및 대상 리소스의 차원이 변환과 일치합니다.
  • 원본 및 대상 리소스는 정확히 동일한 리소스의 일부가 아닙니다.
  • D3D10DDIARG_CREATERESOURCE 형식 멤버에 지정된 각 원본 및 대상 리소스 형식은 적절한 변환 작업을 지원합니다. mipped 블록 압축 리소스의 경우 차원은 모두 2의 강력한 것으로 확인됩니다.
  • 원본 및 대상 리소스의 샘플 수와 품질 수준이 동일해야 합니다. 샘플 수가 같아야 하는 단일 샘플링 리소스를 제외하고.
ResourceCopy 는 하위 리소스가 현재 매핑되지 않도록 보장하지 않습니다.

요구 사항

요구 사항
지원되는 최소 클라이언트 Windows Vista 이상 버전의 Windows 운영 체제에서 사용할 수 있습니다.
대상 플랫폼 데스크톱
머리글 d3d10umddi.h(D3d10umddi.h 포함)

추가 정보

CreateResource(D3D10)

D3D10DDIARG_CREATERESOURCE

D3D10DDI_DEVICEFUNCS

D3D10_1DDI_DEVICEFUNCS

pfnSetErrorCb