DirectX Graphics 레퍼런스 Direct3D C/C++ 레퍼런스 인터페이스 IDirect3DDevice9 UpdateSurface [목차열람] [주소복사] [슬롯비우기] |
Microsoft DirectX 9.0 |
있는 표면으로부터 다른 표면에, 픽셀의 직사각형 서브 세트를 복사 한다.
구문
HRESULT UpdateSurface(
IDirect3DSurface9* pSourceSurface, CONST RECT* pSourceRect, IDirect3DSurface9* pDestinationSurface, CONST POINT* pDestinationPoint );
파라미터
- pSourceSurface
- [in] IDirect3DSurface9 인터페이스의 포인터. 전송원표면을 나타낸다. 이 파라미터는,pDestinationSurface 와 다른 표면을 나타내지 않으면 안 된다.
- pSourceRect
- [in] 전송원표면의 직사각형의 포인터. 이 파라미터에 NULL 를 지정 하면, 표면 전체가 복사 된다.
- pDestinationSurface
- [in] IDirect3DSurface9 인터페이스의 포인터. 목적지 표면을 나타낸다.
- pDestinationPoint
- [in] 목적지 직사각형의 좌상구석의 포인터. 이 파라미터에 NULL 를 지정 하면, 표면 전체가 복사 된다.
반환값
성공했을 경우는,D3D_OK 를 돌려준다.
실패했을 경우는, 다음의 몇개의 값을 돌려준다.
D3DERR_INVALIDCALL 메서드의 호출이 무효이다. 예를 들어, 메서드의 파라미터에 무효인 값이 설정되어 있는 경우 등이다.
주의
이 메서드는, Microsoft® DirectX® 8.0 의 CopyRects 에 유사하고 있다.
이 메서드에는 다음의 제한이 있다.
- 전송원표면은, D3DPOOL_SYSTEMMEM 로 생성 할 필요가 있다.
- 목적지 표면은, D3DPOOL_DEFAULT 로 생성 할 필요가 있다.
- 어느 쪽의 표면도 잠그거나 미처리의 장치 문맥을 보관 유지하거나 할 수 없다.
- 어느 쪽의 표면도, 멀티 샘플링으로 생성 할 수 없다. 어느 쪽의 표면에도 유효한 플래그는, D3DMULTISAMPLE_NONE 뿐이다.
- 표면 포맷은, 스텐실 포맷에는 할 수 없다.
- 전송원 및 목적지의 직사각형은, 표면내에 들어가지 않으면 안 된다.
- 확대도 축소도 할 수 없다 (직사각형은 같은 사이즈가 아니면 안된다).
- 전송원포맷과 목적지 포맷이 일치하고 있지 않으면 안 된다.
현재 지원 되고 있는 편성을 다음 표에 나타낸다.
목적지 포맷 텍스처 RT 텍스처 RT 단순한 오프 스크린 전송원포맷 텍스처 네 네 네* 네 RT 텍스처 아니오 아니오 아니오 아니오 RT 아니오 아니오 아니오 아니오 단순한 오프 스크린 네 네 네 네 * 요구된 복사를 드라이버가 지원 하고 있지 않는 경우, 잠금과 복사를 사용해 에뮬레이트 된다.
애플리케이션이 D3DPOOL_DEFAULT 렌더링 타겟으로부터 D3DPOOL_SYSTEMMEM 표면에 데이터를 복사 할 필요가 있는 경우,IDirect3DDevice9::GetRenderTargetData 를 사용할 수 있다.