다음을 통해 공유


텍스처 더티 영역(Direct3D 9)

애플리케이션은 텍스처에서 "더티" 영역을 지정하여 복사되는 텍스처의 하위 집합을 최적화할 수 있습니다. 더티 표시된 지역만 IDirect3DDevice9::UpdateTexture 호출로 복사됩니다. 그러나 맞춤을 최적화하기 위해 더티 영역을 확장할 수 있습니다. 텍스처가 만들어지면 전체 텍스처가 더티 간주됩니다. 다음 작업만 텍스처의 더티 상태에 영향을 줍니다.

  • 텍스처에 더티 영역 추가
  • 텍스처에서 일부 버퍼 잠금 이 작업은 잠긴 지역을 더티 지역으로 추가합니다. 애플리케이션은 실제 더티 지역에 대해 더 잘 아는 경우 이 자동 더티 지역 업데이트를 해제할 수 있습니다.
  • IDirect3DDevice9::UpdateSurface에서 텍스처의 표면 수준을 대상으로 사용하면 전체 텍스처가 더티 표시됩니다.
  • IDirect3DDevice9::UpdateTexture에서 텍스처를 원본으로 사용하면 원본 텍스처의 모든 더티 영역이 지워질 수 있습니다.
  • IDirect3DSurface9::GetDC를 사용하여 디바이스 컨텍스트를 반환합니다.
  • IDirect3DBaseTexture9::GenerateMipSubLevels를 호출하면 전체 텍스처가 더티 표시됩니다.
  • IDirect3DBaseTexture9::SetAutoGenFilterType을 호출하면 전체 텍스처가 더티 표시됩니다.

더티 영역은 mipmapped 텍스처의 최상위 수준에서 설정되며, IDirect3DDevice9::UpdateTexture는 각 하위 수준에 대해 복사된 바이트 수를 최소화하기 위해 밉 체인 아래로 더티 영역을 확장할 수 있습니다. 하위 수준 더티 영역 좌표는 바깥쪽으로 반올림됩니다. 즉, 소수 부분이 텍스처의 가장 가까운 가장자리를 향해 반올림됩니다.

각 텍스처 형식에는 서로 다른 유형의 더티 영역이 있으므로 각 텍스처 형식에 메서드가 있습니다. 2D 텍스처는 더티 사각형을 사용하고 볼륨 텍스처는 상자를 사용합니다.

위의 메서드에 대한 pDirtyRect 또는 pDirtyBox 매개 변수에 대해 NULL을 전달하면 전체 텍스처를 포함하도록 더티 영역이 확장됩니다.

각 잠금 메서드는 D3DLOCK_NO_DIRTY_UPDATE 수 있으므로 텍스처의 더티 상태가 변경되지 않습니다. 자세한 내용은 리소스 잠금(Direct3D 9)을 참조하세요.

잠금 작업 중에 변경된 실제 지역 집합에 대한 자세한 정보를 사용할 수 있는 경우 애플리케이션은 D3DLOCK_NO_DIRTY_UPDATE 사용해야 합니다. 잠금 또는 텍스처의 복사본만(즉, 최상위 수준으로 잠그거나 복사하지 않고)은 해당 텍스처에 대한 더티 영역을 업데이트하지 않습니다. 애플리케이션은 최상위 수준을 잠그지 않고 하위 수준을 잠글 때 더티 지역을 업데이트하는 것과 동일한 책임을 져야 합니다.

기본 텍스트 변환 개념