다음을 통해 공유


PFND3D10DDI_RESOURCECOPYREGION 콜백 함수(d3d10umddi.h)

ResourceCopyRegion 함수는 원본 하위 리소스 지역을 대상 하위 리소스의 위치에 복사합니다.

통사론

PFND3D10DDI_RESOURCECOPYREGION Pfnd3d10ddiResourcecopyregion;

void Pfnd3d10ddiResourcecopyregion(
  D3D10DDI_HDEVICE unnamedParam1,
  D3D10DDI_HRESOURCE unnamedParam2,
  UINT unnamedParam3,
  UINT unnamedParam4,
  UINT unnamedParam5,
  UINT unnamedParam6,
  D3D10DDI_HRESOURCE unnamedParam7,
  UINT unnamedParam8,
  const D3D10_DDI_BOX *unnamedParam9
)
{...}

매개 변수

unnamedParam1

hDevice [in]

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

unnamedParam2

hDstResource [in]

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

unnamedParam3

DstSubresource [in]

복사할 대상 하위 리소스를 나타내는 인덱스입니다.

unnamedParam4

DstX [in]

대상 하위 리소스의 x 좌표입니다.

unnamedParam5

DstY [in]

대상 하위 리소스의 y 좌표입니다. 1차원(1차원) 하위 리소스의 경우 DstY 0으로 설정됩니다.

unnamedParam6

DstZ [in]

대상 하위 리소스의 z 좌표입니다. 1차원(1차원) 및 2차원(2차원) 하위 리소스의 경우 DstZ 0으로 설정됩니다.

unnamedParam7

hSrcResource [in]

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

unnamedParam8

SrcSubresource [in]

복사할 원본 하위 리소스를 나타내는 인덱스입니다.

unnamedParam9

pSrcBox [in, optional]

원본 또는 대상 하위 리소스에 맞는 상자를 지정하는 D3D10_DDI_BOX 구조체에 대한 포인터입니다. pSrcBox NULL 경우 드라이버는 전체 원본 하위 리소스를 대상에 복사해야 합니다.

D3D10_DDI_BOX 구조체의 멤버가 왼쪽 >=오른쪽, 위쪽>=아래쪽또는 >=뒤로경우 pSrcBox 비어 있는 것으로 간주됩니다. 및 ResourceCopyRegion 복사 작업을 수행해서는 안됩니다.

반환 값

없음

발언

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

Microsoft Direct3D 런타임은 사용자 모드 표시 드라이버의 ResourceCopyRegion 함수를 호출하여 지정된 원본 하위 리소스 지역에서 지정된 대상 하위 리소스의 위치로 복사하도록 드라이버에 알립니다. 원본 및 대상 하위 리소스는 동일한 리소스의 동일한 하위 리소스일 수 없습니다. 원본 및 대상 리소스는 모두 동일한 유형의 리소스여야 하며 서로 변환할 수 있는 형식 형식(DXGI_FORMAT 형식 값)이 있어야 합니다.

버퍼의 경우 모든 좌표는 바이트 단위여야 합니다. 반면 텍스처의 경우 모든 좌표는 픽셀 단위여야 합니다. pSrcBox 매개 변수가 가리키는 상자는 원본 하위 리소스 지역 또는 대상 하위 리소스의 가장자리 위로 확장해서는 안 됩니다. 원본 및 대상 리소스는 현재 매핑되지 않아야 합니다. 또한 리소스 만들기 플래그는 리소스가 복사 작업에 참여할 수 있는지 여부를 제한합니다.

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

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

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

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

복사

복사를 위해 resourceCopyRegion 드라이버의 CreateResource(D3D10) 함수를 통해 원본 및 대상 리소스가 생성되었는지 확인합니다.

  • 대상 리소스가 D3D10DDIARG_CREATERESOURCE 구조의 Usage 멤버에 설정된 D3D10_DDI_USAGE_IMMUTABLE 값으로 만들어지지 않았습니다.
  • 원본 또는 대상 리소스에 D3D10DDIARG_CREATERESOURCE BindFlags 멤버에 D3D10_DDI_BIND_DEPTH_STENCIL 비트가 설정되었거나 다중 샘플링된 리소스인 경우 ResourceCopyRegionpSrcBox 매개 변수가 NULL , DstX, DstYDstZ 매개 변수가 0인지 확인합니다.
  • 하위 리소스 인덱스는 범위에 있습니다.
  • 맞춤 제한은 좌표에 적용됩니다.
  • 원본 및 대상 리소스는 정확히 동일한 하위 리소스의 일부가 아닙니다.
  • D3D10DDIARG_CREATERESOURCE Format 멤버에 지정된 각 원본 및 대상 리소스 형식은 같은 형식이 없는 그룹에 있습니다.
  • 원본 및 대상 리소스에는 동일한 수의 샘플과 품질 수준이 있어야 합니다. 샘플이 동일한 수의 샘플만 있어야 하는 단일 샘플링 리소스를 제외하고
ResourceCopyRegion 대상 오프셋에 의해 오프셋된 원본 상자가 전적으로 리소스에 맞는지 확인하지 않습니다. ResourceCopyRegion 하위 리소스가 현재 매핑되지 않도록 보장하지 않습니다.

변환

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

  • 대상 리소스가 D3D10DDIARG_CREATERESOURCE 구조의 Usage 멤버에 설정된 D3D10_DDI_USAGE_IMMUTABLE 값으로 만들어지지 않았습니다.
  • 원본 또는 대상 리소스에 D3D10DDIARG_CREATERESOURCE BindFlags 멤버에 D3D10_DDI_BIND_DEPTH_STENCIL 비트가 설정되었거나 다중 샘플링된 리소스인 경우 ResourceCopyRegionpSrcBox 매개 변수가 NULL , DstX, DstYDstZ 매개 변수가 0인지 확인합니다.
  • 하위 리소스 인덱스는 범위에 있습니다.
  • 맞춤 제한은 좌표에 적용됩니다.
  • 원본 및 대상 리소스는 정확히 동일한 하위 리소스의 일부가 아닙니다.
  • D3D10DDIARG_CREATERESOURCE Format 멤버에 지정된 각 원본 및 대상 리소스 형식은 같은 형식이 없는 그룹에 있습니다.
  • D3D10DDIARG_CREATERESOURCE Format 멤버에 지정된 각 원본 및 대상 리소스 형식은 적절한 변환 작업을 지원합니다.
  • 원본 및 대상 리소스에는 동일한 수의 샘플과 품질 수준이 있어야 합니다. 샘플이 동일한 수의 샘플만 있어야 하는 단일 샘플링 리소스를 제외하고
ResourceCopyRegion 하위 리소스가 현재 매핑되지 않도록 보장하지 않습니다. ResourceCopyRegion 대상 오프셋에 의해 오프셋된 원본 상자가 전적으로 리소스에 맞는지 확인하지도 않습니다.

요구 사항

요구
지원되는 최소 클라이언트 Windows Vista 이상 버전의 Windows 운영 체제에서 사용할 수 있습니다.
대상 플랫폼 바탕 화면
헤더 d3d10umddi.h(D3d10umddi.h 포함)

참고 항목

D3D10DDI_DEVICEFUNCS

D3D10_DDI_BOX

pfnSetErrorCb