Metode IDirect3DDevice9::UpdateTexture (d3d9helper.h)

Updates bagian kotor dari tekstur.

Sintaks

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

Parameter

[in] pSourceTexture

Jenis: IDirect3DBaseTexture9*

Arahkan ke antarmuka IDirect3DBaseTexture9 , yang mewakili tekstur sumber. Tekstur sumber harus dalam memori sistem (D3DPOOL_SYSTEMMEM).

[in] pDestinationTexture

Jenis: IDirect3DBaseTexture9*

Arahkan ke antarmuka IDirect3DBaseTexture9 , yang mewakili tekstur tujuan. Tekstur tujuan harus berada di kumpulan memori D3DPOOL_DEFAULT.

Nilai kembali

Jenis: HRESULT

Jika metode berhasil, nilai yang dikembalikan D3D_OK. Jika metode gagal, nilai yang dikembalikan dapat D3DERR_INVALIDCALL.

Keterangan

Anda dapat mengotori sebagian tekstur dengan menguncinya, atau dengan memanggil salah satu metode berikut.

IDirect3DDevice9::UpdateTexture mengambil bagian kotor tekstur dengan menghitung apa yang telah diakumulasikan sejak operasi pembaruan terakhir.

Untuk alasan performa, wilayah kotor hanya dicatat untuk tingkat nol tekstur. Untuk sublevel, diasumsikan bahwa persegi panjang atau kotak yang sesuai (diskalakan) juga kotor. Wilayah kotor secara otomatis direkam ketika LockRect atau IDirect3DVolumeTexture9::LockBox dipanggil tanpa D3DLOCK_NO_DIRTY_UPDATE atau D3DLOCK_READONLY. Selain itu, permukaan tujuan IDirect3DDevice9::UpdateSurface ditandai kotor.

Metode ini gagal jika tekstur memiliki jenis yang berbeda, jika buffer tingkat bawahnya memiliki ukuran yang berbeda, atau jika tingkat pencocokannya tidak cocok. Misalnya, pertimbangkan tekstur sumber enam tingkat dengan dimensi berikut.


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

Tekstur sumber enam tingkat ini bisa menjadi sumber untuk tujuan satu tingkat berikut.


1x1

Untuk tujuan dua tingkat berikut.


2x1, 1x1

Atau, untuk tujuan tiga tingkat berikut.


4x2, 2x1, 1x1

Selain itu, metode ini akan gagal jika teksturnya memiliki format yang berbeda. Jika tekstur tujuan memiliki tingkat yang lebih sedikit daripada sumbernya, hanya tingkat yang cocok yang disalin. Jika tekstur sumber memiliki tingkat yang lebih sedikit daripada tujuan, metode akan gagal.

Jika tekstur sumber memiliki wilayah kotor, salinan dapat dioptimalkan dengan membatasi salinan hanya ke wilayah tersebut. Tidak dijamin bahwa hanya byte yang ditandai kotor yang akan disalin.

Berikut adalah kemungkinan untuk kombinasi permukaan sumber dan tujuan:

  • Jika pSourceTexture adalah mipmap dan pDestinationTexture yang dibuat secara otomatis, hanya tingkat pencocokan teratas yang diperbarui, dan sublevel tujuan diregenerasi. Semua sublevel sumber lainnya diabaikan.
  • Jika pSourceTexture dan pDestinationTexture adalah mipmap yang dibuat secara otomatis, hanya tingkat pencocokan teratas yang diperbarui. Sublevel dari sumber diabaikan dan sublevel tujuan diregenerasi.
  • Jika pSourceTexture adalah mipmap yang dibuat secara otomatis dan pDestinationTexture mipmap yang tidak dibuat secara otomatis, UpdateTexture akan gagal.

Persyaratan

Persyaratan Nilai
Target Platform Windows
Header d3d9helper.h (termasuk D3D9.h)
Pustaka D3D9.lib

Lihat juga

IDirect3D9::CreateDevice

IDirect3DDevice9