PFND3D11_1DDI_RESOURCECOPYREGION 콜백 함수(d3d10umddi.h)
원본 하위 리소스 지역을 대상 하위 리소스의 위치에 복사합니다.
구문
PFND3D11_1DDI_RESOURCECOPYREGION Pfnd3d111DdiResourcecopyregion;
void Pfnd3d111DdiResourcecopyregion(
D3D10DDI_HDEVICE unnamedParam1,
D3D10DDI_HRESOURCE unnamedParam2,
UINT unnamedParam3,
UINT unnamedParam4,
UINT unnamedParam5,
UINT unnamedParam6,
D3D10DDI_HRESOURCE unnamedParam7,
UINT unnamedParam8,
const D3D10_DDI_BOX *unnamedParam9,
[in] UINT CopyFlags
)
{...}
매개 변수
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 구조체의 멤버가 left>=right, top>=bottom 또는 front>=back인 경우 pSrcBox는 비어 있는 것으로 간주되며 ResourceCopyRegion(D3D11_1)은 복사 작업을 수행하지 않아야 합니다.
[in] CopyFlags
복사 작업의 특성을 D3D11_1_DDI_COPY_FLAGS 열거형 형식의 값에 대한 비트 OR로 지정하는 값입니다.
반환 값
없음
설명
드라이버는 pfnSetErrorCb 콜백 함수를 사용하여 오류 코드를 설정할 수 있습니다.
Microsoft Direct3D 런타임은 사용자 모드 디스플레이 드라이버의 ResourceCopyRegion(D3D11_1) 함수를 호출하여 지정된 원본 하위 리소스 지역에서 지정된 대상 하위 리소스의 위치로 복사하도록 드라이버에 알릴 수 있습니다. 원본 및 대상 하위 리소스는 동일한 리소스의 동일한 하위 리소스일 수 있습니다. 원본 리소스와 대상 리소스는 모두 동일한 유형의 리소스여야 하며 서로 변환할 수 있는 형식 형식(DXGI_FORMAT 형식 값)이 있어야 합니다.
버퍼의 경우 모든 좌표는 바이트여야 합니다. 반면 텍스처의 경우 모든 좌표는 픽셀 단위여야 합니다. pSrcBox 매개 변수가 가리키는 상자는 원본 하위 리소스 지역 또는 대상 하위 리소스의 가장자리를 확장해서는 안 됩니다. 원본 및 대상 리소스는 현재 매핑되지 않아야 합니다. 또한 리소스 만들기 플래그는 리소스가 복사 작업에 참여할 수 있는지 여부를 제한합니다.
D3DDDIERR_DEVICEREMOVED 경우를 제외하고 드라이버에 오류가 발생하지 않아야 합니다. 따라서 드라이버가 pfnSetErrorCb 함수를 호출할 때 D3DDDIERR_DEVICEREMOVED 경우를 제외하고 오류를 전달하는 경우 Direct3D 런타임은 오류가 중요하다고 결정합니다. 디바이스가 제거된 경우에도 드라이버는 D3DDDIERR_DEVICEREMOVED 반환할 필요가 없습니다. 그러나 디바이스 제거가 작동을 방해하는 경우(일반적으로 발생하지 않아야 하는) 드라이버는 D3DDDIERR_DEVICEREMOVED 반환할 수 있습니다.
드라이버는 복사 및 변환을 처리하는 switch 문을 포함할 수 있는 ResourceCopyRegion(D3D11_1) 함수를 구현할 수 있습니다. 즉, 드라이버는 하나의 ResourceCopyRegion(D3D11_1)을 구현할 수 있으며 D3D11_1DDI_DEVICEFUNCS pfnResourceCopyRegion 멤버와 함께 resourceCopyRegion(D3D11_1)을 가리키도록 D3D11_1DDI_DEVICEFUNCS 구조체의 pfnResourceConvertRegion 멤버를 설정할 수 있습니다. 그러나 성능을 향상시키기 위해 드라이버는 별도의 ResourceCopyRegion(D3D11_1) 및 ResourceConvertRegion(D3D11_1) 함수를 구현할 수 있습니다.
다음 섹션에서는 복사 및 변환 조건을 나열합니다.
복사
복사를 위해 ResourceCopyRegion(D3D11_1) 은 다음 조건을 사용하여 드라이버의 CreateResource(D3D11) 함수를 통해 원본 및 대상 리소스를 만들도록 합니다.
- 대상 리소스가 D3D11DDIARG_CREATERESOURCE 구조의 Usage 멤버에 설정된 D3D10_DDI_USAGE_IMMUTABLE 값으로 만들어지지 않았습니다.
- 원본 또는 대상 리소스에 D3D10DDIARG_CREATERESOURCE BindFlags 멤버에 설정된 D3D10_DDI_BIND_DEPTH_STENCIL 비트가 있거나 다중 샘플링된 리소스인 경우 ResourceCopyRegion(D3D11_1) 은 pSrcBox 매개 변수가 NULL이고 DstX, DstY 및 DstZ 매개 변수는 0인지 확인합니다.
- 하위 리소스 인덱스는 범위에 있습니다.
- 맞춤 제한은 좌표에 적용됩니다.
- 원본 및 대상 리소스는 정확히 동일한 하위 리소스의 일부가 아닙니다.
- D3D11DDIARG_CREATERESOURCEFormat 멤버에 지정된 각 원본 및 대상 리소스 형식은 동일한 무형식 그룹에 있습니다.
- 원본 및 대상 리소스의 샘플 수와 품질 수준이 동일해야 합니다. 샘플 수가 같아야 하는 단일 샘플링 리소스를 제외하고.
변환
변환의 경우 ResourceCopyRegion(D3D11_1) 은 다음 조건을 사용하여 드라이버의 CreateResource(D3D11) 함수를 통해 원본 및 대상 리소스를 만들도록 합니다.
- 대상 리소스가 D3D11DDIARG_CREATERESOURCE 구조의 Usage 멤버에 설정된 D3D10_DDI_USAGE_IMMUTABLE 값으로 만들어지지 않았습니다.
- 원본 또는 대상 리소스에 D3D11DDIARG_CREATERESOURCE BindFlags 멤버에 설정된 D3D10_DDI_BIND_DEPTH_STENCIL 비트가 있거나 다중 샘플링된 리소스인 경우 ResourceCopyRegion(D3D11_1) 은 pSrcBox 매개 변수가 NULL이고 DstX, DstY 및 DstZ 매개 변수는 0인지 확인합니다.
- 하위 리소스 인덱스는 범위에 있습니다.
- 맞춤 제한은 좌표에 적용됩니다.
- 원본 및 대상 리소스는 정확히 동일한 하위 리소스의 일부가 아닙니다.
- D3D11DDIARG_CREATERESOURCEFormat 멤버에 지정된 각 원본 및 대상 리소스 형식은 동일한 무형식 그룹에 있습니다.
- D3D11DDIARG_CREATERESOURCEFormat 멤버에 지정된 각 원본 및 대상 리소스 형식은 적절한 변환 작업을 지원합니다.
- 원본 및 대상 리소스의 샘플 수와 품질 수준이 동일해야 합니다. 샘플 수가 같아야 하는 단일 샘플링 리소스를 제외하고.
요구 사항
요구 사항 | 값 |
---|---|
지원되는 최소 클라이언트 | Windows 8 |
지원되는 최소 서버 | Windows Server 2012 |
대상 플랫폼 | 데스크톱 |
머리글 | d3d10umddi.h(D3d10umddi.h 포함) |