DirectX Graphics 레퍼런스 Direct3D C/C++ 레퍼런스 인터페이스 IDirect3DDevice9 StretchRect   [목차열람] [주소복사] [슬롯비우기]
IDirect3DDevice9::StretchRect 메서드
 
Microsoft DirectX 9.0

IDirect3DDevice9::StretchRect 메서드


전송원직사각형의 내용을 목적지 직사각형에 복사 한다. 복사에 의해, 전송원직사각형을 확대 및 필터링 할 수 있다. 이 함수는, 비디오 스트림의 어스펙트비(가로세로 비율)의 변경에 자주(잘) 사용된다.

구문

HRESULT StretchRect(      

    IDirect3DSurface9 *pSourceSurface,     CONST RECT *pSourceRect,     IDirect3DSurface9 *pDestSurface,     CONST RECT *pDestRect,     D3DTEXTUREFILTERTYPE Filter );

파라미터

pSourceSurface
[in] 전송원표면의 포인터. 「IDirect3DSurface9 」를 참조할것.
pSourceRect
[in] 전송원직사각형의 포인터. 이 파라미터에 NULL 를 지정 하면, 전송원표면 전체가 사용된다.
pDestSurface
[in] 목적지 표면의 포인터. 「IDirect3DSurface9 」를 참조할것.
pDestRect
[in] 목적지 직사각형의 포인터. 이 파라미터에 NULL 를 지정 하면, 목적지 표면 전체가 사용된다.
Filter
[in] 필터 타입. 지정 가능한 값은, D3DTEXF_NONE, D3DTEXF_POINT, 또는 D3DTEXF_LINEAR 이다. 더 자세한 정보는, 「D3DTEXTUREFILTERTYPE 」를 참조할것.

반환값

성공했을 경우는,D3D_OK 를 돌려준다.

실패했을 경우의 반환값은 다음대로.

D3DERR_INVALIDCALL메서드의 호출이 무효이다. 예를 들어, 메서드의 파라미터에 무효인 값이 설정되어 있는 경우 등이다.


주의

일반적인 제한

IDirect3DDevice9::StretchRect 로 유효한 표면의 편성에는, 다양한 제한이 있다. 제한의 요인에는, 드라이버가 Microsoft® DirectX® 9.0 드라이버인가 또는 그 이전의 것인지, 또 조작에 의해 확대/축소의 어느 쪽이 발생할까 등이 포함된다. 애플리케이션측에서는 드라이버가 DirectX 9.0 일지 어떨지는 인식하지 않기 때문에, DirectX 9.0 레벨 이상의 드라이버에 대해서는, Microsoft Direct3D® 는 자동적으로 새로운 D3DDEVCAPS2_CAN_STRETCHRECT_FROM_TEXTURES 능력을 D3DDEVCAPS2 구조 체내에서 설정한다.

DirectX 8. x 드라이버 (확대 없음)

목적지 포맷
텍스처 RT 텍스처 RT 단순한 오프 스크린
전송원포맷 텍스처 아니오 아니오 아니오 아니오
RT 텍스처 아니오 아니오
RT 아니오 아니오
단순한 오프 스크린

DirectX 8. x 드라이버 (확대 있어)

목적지 포맷
텍스처 RT 텍스처 RT 단순한 오프 스크린
전송원포맷 텍스처 아니오 아니오 아니오 아니오
RT 텍스처 아니오 아니오 아니오 아니오
RT 아니오 아니오
단순한 오프 스크린 아니오 아니오

DirectX 9.0 드라이버 (확대 없음)

목적지 포맷
텍스처 RT 텍스처 RT 단순한 오프 스크린
전송원포맷 텍스처 아니오 아니오
RT 텍스처 아니오 아니오
RT 아니오 아니오
단순한 오프 스크린 아니오

DirectX 9.0 드라이버 (확대 있어)

목적지 포맷
텍스처 RT 텍스처 RT 단순한 오프 스크린
전송원포맷 텍스처 아니오 아니오
RT 텍스처 아니오 아니오
RT 아니오 아니오
단순한 오프 스크린 아니오 아니오

IDirect3DDevice9::StretchRect 에서는, 전송원표면와 목적지 표면의 양쪽 모두가 D3DPOOL_DEFAULT 표면이 아니면 안된다.

필터링을 지정했을 경우,IDirect3DDevice9::StretchRect 는, 드라이버가 D3DCAPS9 로 적절한 StretchRectFilterCaps 를 설정하지 않는 한 실패한다. D3DTEXF_NONE 를 지정했을 경우, 드라이버는 필터링 알고리즘을 선택한다.

확대 조작은, YUV 로부터 고정밀도 RGBA 의 색공간(color space)의 변환만을 지원 하고 있다. 같은 표면 위에의 직사각형간에서의 확대는 지원 되지 않는다. 변환의 소프트웨어 에뮬레이션은 지원 되지 않기 때문에,IDirect3D9::CheckDeviceFormatConversion 를 사용해 하드웨어의 색변환 지원을 테스트할 필요가 있다.

텍스처의 제한

IDirect3DDevice9::StretchRect 는, DirectX 9.0 드라이버 (D3DDEVCAPS2_CAN_STRETCHRECT_FROM_TEXTURES 를 설정하는 드라이버)에서의 텍스처 표면 (또는 큐브 텍스처 표면)에서만 동작한다.

깊이 및 스텐실의 제한

깊이 및 스텐실 표면 는,IDirect3DDevice9::StretchRect 를 사용해 복사 할 수 있지만, 다음의 제한이 있다.

다음의 몇개의 경우,IDirect3DDevice9::StretchRect 는 실패한다.



© 2002 Microsoft Corporation. All rights reserved.
↑TOP