다음을 통해 공유


IDirect3DDevice9::UpdateTexture 메서드(d3d9.h)

텍스처의 더티 부분을 업데이트.

구문

HRESULT UpdateTexture(
  [in] IDirect3DBaseTexture9 *pSourceTexture,
  [in] IDirect3DBaseTexture9 *pDestinationTexture
);

매개 변수

[in] pSourceTexture

형식: IDirect3DBaseTexture9*

원본 텍스처를 나타내는 IDirect3DBaseTexture9 인터페이스에 대한 포인터입니다. 원본 텍스처는 시스템 메모리(D3DPOOL_SYSTEMMEM)에 있어야 합니다.

[in] pDestinationTexture

형식: IDirect3DBaseTexture9*

대상 텍스처를 나타내는 IDirect3DBaseTexture9 인터페이스에 대한 포인터입니다. 대상 텍스처는 D3DPOOL_DEFAULT 메모리 풀에 있어야 합니다.

반환 값

형식: HRESULT

메서드가 성공하면 반환 값이 D3D_OK. 메서드가 실패하면 반환 값을 D3DERR_INVALIDCALL 수 있습니다.

설명

텍스처를 잠그거나 다음 메서드 중 하나를 호출하여 텍스처의 일부를 더티 수 있습니다.

IDirect3DDevice9::UpdateTexture는 마지막 업데이트 작업 이후 누적된 항목을 계산하여 텍스처의 더티 부분을 검색합니다.

성능상의 이유로 더티 영역은 텍스처의 수준 0에 대해서만 기록됩니다. sublevels의 경우 해당하는(스케일링된) 사각형 또는 상자도 더티 가정합니다. 더티 지역은 D3DLOCK_NO_DIRTY_UPDATE 또는 D3DLOCK_READONLY 없이 LockRect 또는 IDirect3DVolumeTexture9::LockBox 가 호출될 때 자동으로 기록됩니다. 또한 IDirect3DDevice9::UpdateSurface의 대상 화면은 더티 표시됩니다.

텍스처가 다른 형식이거나, 하위 수준 버퍼의 크기가 다르거나, 일치하는 수준이 일치하지 않는 경우 이 메서드는 실패합니다. 예를 들어 다음 차원의 6개 수준 원본 텍스처를 고려합니다.


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

이 6단계 원본 텍스처는 다음 한 수준 대상의 원본일 수 있습니다.


1x1

다음 두 수준 대상의 경우.


2x1, 1x1

또는 다음 3개 수준 대상에 대해 입니다.


4x2, 2x1, 1x1

또한 텍스처의 형식이 다르면 이 메서드가 실패합니다. 대상 텍스처의 수준이 원본보다 적은 경우 일치하는 수준만 복사됩니다. 원본 텍스처의 수준이 대상보다 적으면 메서드가 실패합니다.

원본 텍스처에 더티 영역이 있는 경우 복사본을 해당 영역으로만 제한하여 복사본을 최적화할 수 있습니다. 더티 표시된 바이트만 복사된다는 보장은 없습니다.

원본 및 대상 표면 조합의 가능성은 다음과 같습니다.

  • pSourceTexture가 자동 생성되지 않은 mipmap이고 pDestinationTexture가 자동 생성된 mipmap인 경우 가장 일치하는 최상위 수준만 업데이트되고 대상 하위 수준이 다시 생성됩니다. 다른 모든 원본 하위 값은 무시됩니다.
  • pSourceTexture와 pDestinationTexture가 모두 자동 생성된 Mipmap인 경우 가장 일치하는 최상위 수준만 업데이트됩니다. 원본의 하위 값은 무시되고 대상 하위 수준도 다시 생성됩니다.
  • pSourceTexture가 자동 생성된 mipmap이고 pDestinationTexture가 자동 생성된 Mipmap이 아닌 경우 UpdateTexture가 실패합니다.

요구 사항

   
대상 플랫폼 Windows
헤더 d3d9.h(D3D9.h 포함)
라이브러리 D3D9.lib

추가 정보

IDirect3D9::CreateDevice

IDirect3DDevice9