ID3D11DeviceContext::CopySubresourceRegion 메서드(d3d11.h)
원본 리소스에서 대상 리소스로 지역을 복사합니다.
통사론
void CopySubresourceRegion(
[in] ID3D11Resource *pDstResource,
[in] UINT DstSubresource,
[in] UINT DstX,
[in] UINT DstY,
[in] UINT DstZ,
[in] ID3D11Resource *pSrcResource,
[in] UINT SrcSubresource,
[in, optional] const D3D11_BOX *pSrcBox
);
매개 변수
[in] pDstResource
형식: ID3D11Resource*
대상 리소스에 대한 포인터입니다(id3D11Resource
[in] DstSubresource
형식: UINT
대상 하위 리소스 인덱스입니다.
[in] DstX
형식: UINT
대상 영역의 왼쪽 위 모퉁이에 대한 x 좌표입니다.
[in] DstY
형식: UINT
대상 영역의 왼쪽 위 모퉁이에 대한 y 좌표입니다. 1D 하위 리소스의 경우 0이어야 합니다.
[in] DstZ
형식: UINT
대상 영역의 왼쪽 위 모퉁이에 대한 z 좌표입니다. 1D 또는 2D 하위 리소스의 경우 0이어야 합니다.
[in] pSrcResource
형식: ID3D11Resource*
원본 리소스에 대한 포인터입니다(ID3D11Resource참조).
[in] SrcSubresource
형식: UINT
원본 하위 리소스 인덱스입니다.
[in, optional] pSrcBox
형식: const D3D11_BOX*
복사할 수 있는 원본 하위 리소스를 정의하는 3D 상자(D3D11_BOX참조)에 대한 포인터입니다. NULL
빈 상자가 있으면 no-op. 위쪽 값이 아래쪽 값보다 크거나 같거나 왼쪽 값이 오른쪽 값보다 크거나 같거나 앞면 값이 뒤 값보다 크거나 같은 경우 상자가 비어 있습니다. 상자가 비어 있으면 copySubresourceRegion
반환 값
없음
발언
원본 상자는 원본 리소스의 크기 내에 있어야 합니다. 대상 오프셋(x, y 및 z)을 사용하면 대상 리소스에 쓸 때 원본 상자를 오프셋할 수 있습니다. 그러나 원본 상자와 오프셋의 크기는 리소스 크기 내에 있어야 합니다. 대상 리소스 외부에서 복사하거나 원본 리소스보다 큰 원본 상자를 지정하는 경우 CopySubresourceRegion 동작이 정의되지 않습니다.
디버그 계층지원하는 디바이스를 만든 경우 디버그 출력은 이 잘못된 CopySubresourceRegion 호출에 대한 오류를 보고합니다. CopySubresourceRegion
리소스가 버퍼인 경우 모든 좌표는 바이트 단위입니다. 리소스가 텍스처이면 모든 좌표가 텍셀로 표시됩니다. D3D11CalcSubresource 하위 리소스 인덱스를 계산하기 위한 도우미 함수입니다.
CopySubresourceRegion GPU에서 복사를 수행합니다(CPU의 memcpy와 유사). 결과적으로 원본 및 대상 리소스는 다음과 같습니다.
- 다른 하위 리소스여야 합니다(동일한 리소스에서 온 것일 수 있지만).
- 동일한 형식이어야 합니다.
- 호환되는 DXGI 형식(동일하거나 동일한 형식 그룹의 형식)이 있어야 합니다. 예를 들어 이러한 형식은 모두 DXGI_FORMAT_R32G32B32_TYPELESS 그룹에 있으므로 DXGI_FORMAT_R32G32B32_FLOAT 텍스처를 DXGI_FORMAT_R32G32B32_UINT 텍스처에 복사할 수 있습니다.
CopySubresourceRegion 몇 가지 형식 간에 복사할 수 있습니다. 자세한 내용은 Direct3D 10.1사용하여
형식 변환을 참조하세요. - 현재 매핑되지 않을 수 있습니다.
CopySubresourceRegion 복사만 지원합니다. 스트레치, 색 키 또는 혼합을 지원하지 않습니다.
CopySubresourceRegion 몇 가지 형식 형식 간에 리소스 데이터를 재해석할 수 있습니다. 자세한 내용은 Direct3D 10.1사용하여
앱에서 전체 리소스를 복사해야 하는 경우 ID3D11DeviceContext::CopyResource 대신 사용하는 것이 좋습니다.
CopySubresourceRegion
예제
다음 코드 조각은 원본 텍스처의 상자(120,100),(200,220))를 대상 텍스처의 영역(10,20),(90,140)으로 복사합니다.D3D11_BOX sourceRegion;
sourceRegion.left = 120;
sourceRegion.right = 200;
sourceRegion.top = 100;
sourceRegion.bottom = 220;
sourceRegion.front = 0;
sourceRegion.back = 1;
pd3dDeviceContext->CopySubresourceRegion( pDestTexture, 0, 10, 20, 0, pSourceTexture, 0, &sourceRegion );
2D 텍스처의 경우 앞뒤는 각각 0과 1로 설정됩니다.
요구 사항
요구 | 값 |
---|---|
대상 플랫폼 | Windows |
헤더 | d3d11.h |
라이브러리 | D3D11.lib |