DirectX Graphics 레퍼런스 Direct3D C/C++ 레퍼런스 인터페이스 IDirect3DDevice9 UpdateTexture [목차열람] [주소복사] [슬롯비우기] |
Microsoft DirectX 9.0 |
텍스처의 더티 부분을 갱신한다.
구문
HRESULT UpdateTexture(
IDirect3DBaseTexture9 *pSourceTexture, IDirect3DBaseTexture9 *pDestinationTexture );
파라미터
- pSourceTexture
- [in] IDirect3DBaseTexture9 인터페이스의 포인터. 전송원텍스처를 나타낸다. 전송원텍스처는 시스템 메모리내 (D3DPOOL_SYSTEMMEM)에 없으면 안 된다.
- pDestinationTexture
- [in] IDirect3DBaseTexture9 인터페이스의 포인터. 목적지 텍스처를 나타낸다. 목적지 텍스처는 D3DPOOL_DEFAULT 메모리 풀에 없으면 안 된다.
반환값
성공했을 경우는,D3D_OK 를 돌려준다.
실패했을 경우는,D3DERR_INVALIDCALL 를 돌려준다.
주의
텍스처의 일부분을 더티로 하려면 , 그 부분을 잠그는지, 또는 다음의 몇개의 메서드를 호출한다.
- IDirect3DCubeTexture9::AddDirtyRect
- IDirect3DTexture9::AddDirtyRect
- IDirect3DVolumeTexture9::AddDirtyBox
- IDirect3DDevice9::UpdateSurface
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 개의 레벨의 목적지의 전송 바탕으로 된다.
1x12 개의 레벨의 목적지의 경우.
2 x1, 1x1또는, 3 개의 레벨의 목적지의 경우.
4 x2, 2 x1, 1x1또, 텍스처의 포맷이 다른 경우, 이 메서드는 실패한다. 목적지 텍스처의 레벨수가 전송원보다 적은 경우는, 일치하는 레벨만이 복사 된다. 전송원텍스처의 레벨수가 목적지보다 적은 경우, 메서드는 실패한다.
전송원텍스처에 더티 영역이 있는 경우는, 복사를 그 영역에만 한정하는 것으로, 복사 처리를 최적화할 수 있다. 더티로서 마크 되고 있는 바이트만이 복사 된다고 하는 보증은 없다.
전송원 및 목적지 표면의 편성의 가능성은 다음대로.
- pSourceTexture 가 비자동 생성 밉맵으로 pDestinationTexture 가 자동 생성 밉맵의 경우, 최상정도의 일치 레벨이 갱신되어 목적지 서브 레벨이 재생성된다. 전송원의 그 외의 서브 레벨은 모두 무시된다.
- pSourceTexture 와 pDestinationTexture 의 양쪽 모두가 자동 생성 밉맵의 경우, 최상정도의 일치 레벨만이 갱신된다. 전송원의 서브 레벨은 무시되어, 목적지의 서브 레벨은 재생성된다.
- pSourceTexture 가 자동 생성 밉맵으로 pDestinationTexture 가 비자동 생성 밉맵의 경우, UpdateTexture 는 실패한다.
참조
IDirect3D9::CreateDevice