Metode IDirect3DSurface9::LockRect (d3d9helper.h)

Mengunci persegi panjang di permukaan.

Sintaks

HRESULT LockRect(
  [out] D3DLOCKED_RECT *pLockedRect,
  [in]  const RECT     *pRect,
  [in]  DWORD          Flags
);

Parameter

[out] pLockedRect

Jenis: D3DLOCKED_RECT*

Penunjuk ke struktur D3DLOCKED_RECT yang menjelaskan wilayah terkunci.

[in] pRect

Jenis: const RECT*

Penunjuk ke persegi panjang untuk dikunci. Ditentukan oleh penunjuk ke struktur RECT . Menentukan NULL untuk parameter ini memperluas wilayah kotor untuk menutupi seluruh permukaan.

[in] Flags

Jenis: DWORD

Kombinasi bendera penguncian nol atau lebih yang menjelaskan jenis kunci yang akan dilakukan. Untuk metode ini, bendera yang valid adalah:

  • D3DLOCK_DISCARD
  • D3DLOCK_DONOTWAIT
  • D3DLOCK_NO_DIRTY_UPDATE
  • D3DLOCK_NOSYSLOCK
  • D3DLOCK_READONLY
Anda mungkin tidak menentukan subkor ketika menggunakan D3DLOCK_DISCARD. Untuk deskripsi bendera, lihat D3DLOCK.

Mengembalikan nilai

Jenis: HRESULT

Jika metode berhasil, nilai yang dikembalikan adalah D3D_OK.

Jika metode gagal, nilai yang dikembalikan dapat D3DERR_INVALIDCALL atau D3DERR_WASSTILLDRAWING.

Keterangan

Jika bendera D3DLOCK_DONOTWAIT ditentukan dan driver tidak dapat segera mengunci permukaan, IDirect3DSurface9::LockRect akan mengembalikan D3DERR_WASSTILLDRAWING sehingga aplikasi dapat menggunakan siklus CPU sambil menunggu driver mengunci permukaan.

Satu-satunya format yang dapat dikunci untuk permukaan stensil kedalaman adalah D3DFMT_D16_LOCKABLE. Lihat D3DFORMAT.

Untuk alasan performa, wilayah kotor dicatat hanya untuk tingkat nol tekstur. Wilayah kotor secara otomatis direkam ketika IDirect3DSurface9::LockRect dipanggil tanpa D3DLOCK_NO_DIRTY_UPDATE atau D3DLOCK_READONLY. Lihat IDirect3DDevice9::UpdateTexture untuk informasi selengkapnya.

Buffer belakang multisample tidak dapat dikunci.

Metode ini tidak dapat mengambil data dari permukaan yang dimuat oleh sumber daya tekstur yang dibuat dengan D3DUSAGE_RENDERTARGET karena tekstur seperti itu harus ditetapkan ke memori D3DPOOL_DEFAULT dan karenanya tidak dapat dikunci. Dalam hal ini, gunakan sebagai gantinya IDirect3DDevice9::GetRenderTargetData untuk menyalin data tekstur dari memori perangkat ke memori sistem.

Persyaratan

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

Lihat juga

IDirect3DSurface9

IDirect3DSurface9::UnlockRect