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

IDirect3DDevice9::UpdateTexture 메서드


텍스처의 더티 부분을 갱신한다.

구문

HRESULT UpdateTexture(      

    IDirect3DBaseTexture9 *pSourceTexture,     IDirect3DBaseTexture9 *pDestinationTexture );

파라미터

pSourceTexture
[in] IDirect3DBaseTexture9 인터페이스의 포인터. 전송원텍스처를 나타낸다. 전송원텍스처는 시스템 메모리내 (D3DPOOL_SYSTEMMEM)에 없으면 안 된다.
pDestinationTexture
[in] IDirect3DBaseTexture9 인터페이스의 포인터. 목적지 텍스처를 나타낸다. 목적지 텍스처는 D3DPOOL_DEFAULT 메모리 풀에 없으면 안 된다.

반환값

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

실패했을 경우는,D3DERR_INVALIDCALL 를 돌려준다.



주의

텍스처의 일부분을 더티로 하려면 , 그 부분을 잠그는지, 또는 다음의 몇개의 메서드를 호출한다.

IDirect3DDevice9::UpdateTexture 는, 마지막 갱신 처리 이후에 축적된 처리를 계산하는 것으로, 텍스처의 더티 부분을 얻어온다.

퍼포먼스 위에의 이유로부터, 더티 영역은 텍스처의 레벨 0 에 대한 보고 기록한다. 서브 레벨에 대해서는, 대응하는 (스케일링 된) 직사각형 또는 박스도 더티인 것과 상정한다. D3DLOCK_NO_DIRTY_UPDATE 또는 D3DLOCK_READONLY 를 지정하지 않고 LockRect 또는 IDirect3DVolumeTexture9::LockBox 를 호출하면, 더티 영역이 자동적으로 기록된다. 또,IDirect3DDevice9::UpdateSurface 의 목적지 표면은, 더티로서 마크 된다.

전송원과 목적지의 텍스처의 타입이 다른 경우, 양쪽 모두의 텍스처의 최하정도 버퍼의 사이즈가 다른 경우, 또는 일치 레벨이 일치하지 않는 경우, 이 메서드는 실패한다. 예를 들어, 다음과 같은 넓이의 6 개의 레벨의 전송원텍스처가 있다고 한다.

32 x16, 16 x8, 8 x4, 4 x2, 2 x1, 1x1

이 6 개의 레벨의 전송원텍스처는, 다음의 1 개의 레벨의 목적지의 전송 바탕으로 된다.

1x1

2 개의 레벨의 목적지의 경우.

2 x1, 1x1

또는, 3 개의 레벨의 목적지의 경우.

4 x2, 2 x1, 1x1

또, 텍스처의 포맷이 다른 경우, 이 메서드는 실패한다. 목적지 텍스처의 레벨수가 전송원보다 적은 경우는, 일치하는 레벨만이 복사 된다. 전송원텍스처의 레벨수가 목적지보다 적은 경우, 메서드는 실패한다.

전송원텍스처에 더티 영역이 있는 경우는, 복사를 그 영역에만 한정하는 것으로, 복사 처리를 최적화할 수 있다. 더티로서 마크 되고 있는 바이트만이 복사 된다고 하는 보증은 없다.

전송원 및 목적지 표면의 편성의 가능성은 다음대로.

참조

IDirect3D9::CreateDevice


© 2002 Microsoft Corporation. All rights reserved.
↑TOP