IDirect3DDevice9::StretchRect 메서드(d3d9helper.h)
원본 사각형의 내용을 대상 사각형에 복사합니다. 원본 사각형은 복사본으로 확장 및 필터링할 수 있습니다. 이 함수는 비디오 스트림의 가로 세로 비율을 변경하는 데 자주 사용됩니다.
구문
HRESULT StretchRect(
[in] IDirect3DSurface9 *pSourceSurface,
[in] const RECT *pSourceRect,
[in] IDirect3DSurface9 *pDestSurface,
[in] const RECT *pDestRect,
[in] D3DTEXTUREFILTERTYPE Filter
);
매개 변수
[in] pSourceSurface
형식: IDirect3DSurface9*
원본 표면에 대한 포인터입니다. IDirect3DSurface9를 참조하세요.
[in] pSourceRect
형식: const RECT*
원본 사각형에 대한 포인터입니다. 이 매개 변수에 대한 NULL 을 사용하면 전체 원본 표면이 사용됩니다.
[in] pDestSurface
형식: IDirect3DSurface9*
대상 표면에 대한 포인터입니다. IDirect3DSurface9를 참조하세요.
[in] pDestRect
형식: const RECT*
대상 사각형에 대한 포인터입니다. 이 매개 변수에 대한 NULL 을 사용하면 전체 대상 표면이 사용됩니다.
[in] Filter
필터 형식입니다. 허용되는 값은 D3DTEXF_NONE, D3DTEXF_POINT 또는 D3DTEXF_LINEAR. 자세한 내용은 D3DTEXTUREFILTERTYPE을 참조하세요.
반환 값
형식: HRESULT
메서드가 성공하면 반환 값이 D3D_OK. 메서드가 실패하면 반환 값은 D3DERR_INVALIDCALL 수 있습니다.
설명
StretchRect 제한 사항
- 드라이버 지원은 다양합니다. 어떤 드라이버가 어떤 원본 및 대상 형식을 지원하는지 확인하려면 드라이버 지원 섹션(아래)을 참조하세요.
- 원본 및 대상 표면은 기본 메모리 풀에 만들어야 합니다.
- 필터링을 지정하는 경우 적절한 필터 대문자를 설정해야 합니다( D3DCAPS9의 StretchRectFilterCaps 참조).
- 동일한 표면의 원본 사각형과 대상 사각형 간에는 스트레칭이 지원되지 않습니다.
- 대상 표면이 화면 외의 일반 표면이지만 원본이 아닌 경우 스트레칭이 지원되지 않습니다.
- 두 표면이 압축된 형식인 경우 원본 사각형과 대상 사각형 사이를 확장하지 않는 것이 많습니다(압축된 질감 사용(Direct3D 9 참조)).
- Stretching은 YUV에서 높은 정밀도 RGBA로만 색 공간 변환을 지원합니다. 색 변환 지원은 소프트웨어 에뮬레이션에서 지원되지 않으므로 IDirect3D9::CheckDeviceFormatConversion 을 사용하여 하드웨어에서 색 변환 지원을 테스트합니다.
- 원본 또는 대상 표면이 텍스처 표면(또는 큐브 텍스처 표면)인 경우 D3DDEVCAPS2_CAN_STRETCHRECT_FROM_TEXTURES 지원하는 Direct3D 9 드라이버를 사용해야 합니다( D3DDEVCAPS2 참조).
- 원본 및 대상 표면은 텍스처가 아닌 일반 깊이 스텐실 표면이어야 합니다( IDirect3DDevice9::CreateDepthStencilSurface 참조).
- 두 표면 모두 삭제할 수 없습니다.
- 전체 표면을 복사해야 합니다(즉, 하위 사각형 복사본은 허용되지 않음).
- 형식 변환, 늘이기 및 축소는 지원되지 않습니다.
- StretchRect는 BeginScene/EndScene 쌍 내에서 호출할 수 없습니다.
StretchRect를 사용하여 렌더 대상에서 다른 렌더 대상으로 복사할 수 있습니다. 원본 rendertarget이 다중 샘플링되면 원본 rendertarget이 다운샘플링됩니다. instance 경우 다음을 수행할 수 있습니다.
- 다중 샘플링된 rendertarget을 만듭니다.
- 다중 샘플링되지 않은 동일한 크기의 두 번째 rendertarget을 만듭니다.
- 복사(StretchRect를 사용하여 다중 샘플 rendertarget을 두 번째 rendertarget에 복사합니다.
드라이버 지원
StretchRect에 유효한 표면 조합에 대한 많은 제한 사항이 있습니다. 요인에는 드라이버가 Direct3D 9 드라이버인지 또는 이전 드라이버인지 여부와 연산으로 인해 늘어나거나 축소되는지 여부가 포함됩니다. 애플리케이션은 드라이버가 Direct3D 9 드라이버인지 여부를 인식할 수 없으므로 런타임은 Direct3D 9 수준 드라이버 이상에 대해 새 상한 D3DDEVCAPS2_CAN_STRETCHRECT_FROM_TEXTURES 상한( D3DDEVCAPS2 참조)을 자동으로 설정합니다.
DirectX 8 드라이버(늘어나지 않음) | |||||
---|---|---|---|---|---|
Dest 형식 | |||||
질감 | RT 텍스처 | RT | 화면 플레인 | ||
Src 형식 | 질감 | 예 | 예 | 예 | 예 |
RT 텍스처 | 예 | 예 | Yes | 예 | |
RT | 예 | 예 | Yes | 예 | |
화면 플레인 | Yes | Yes | Yes | Yes |
DirectX 8 드라이버(스트레칭) | |||||
---|---|---|---|---|---|
Dest 형식 | |||||
질감 | RT 텍스처 | RT | 화면 플레인 | ||
Src 형식 | 질감 | 예 | 예 | 예 | 예 |
RT 텍스처 | 예 | 예 | 예 | 예 | |
RT | 예 | 예 | Yes | 예 | |
오프 스크린 플레인 | 예 | 예 | Yes | 예 |
Direct3D 9 드라이버(늘어나지 않음) | |||||
---|---|---|---|---|---|
Dest 형식 | |||||
질감 | RT 텍스처 | RT | 오프 스크린 플레인 | ||
Src 형식 | 질감 | 예 | 예 | Yes | 예 |
RT 텍스처 | 예 | 예 | Yes | 예 | |
RT | 예 | 예 | Yes | 예 | |
오프 스크린 플레인 | 예 | 예 | Yes | Yes |
Direct3D 9 드라이버(스트레칭) | |||||
---|---|---|---|---|---|
Dest 형식 | |||||
질감 | RT 텍스처 | RT | 오프 스크린 플레인 | ||
Src 형식 | 질감 | 예 | 예 | Yes | 예 |
RT 텍스처 | 예 | 예 | Yes | 예 | |
RT | 예 | 예 | Yes | 예 | |
오프 스크린 플레인 | 예 | 예 | Yes | 예 |
요구 사항
대상 플랫폼 | Windows |
헤더 | d3d9helper.h(D3D9.h 포함) |
라이브러리 | D3D9.lib |