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.
- IDirect3DCubeTexture9::AddDirtyRect
- IDirect3DTexture9::AddDirtyRect
- IDirect3DVolumeTexture9::AddDirtyBox
- IDirect3DDevice9::UpdateSurface
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 |