Bagikan melalui


IDirect3DQuery9::Metode GetData (d3d9helper.h)

Polling sumber daya yang dikueri untuk mendapatkan status kueri atau hasil kueri. Untuk informasi selengkapnya tentang kueri, lihat Kueri (Direct3D 9).

Sintaks

HRESULT GetData(
  [in, out] void  *pData,
  [in]      DWORD dwSize,
  [in]      DWORD dwGetDataFlags
);

Parameter

[in, out] pData

Jenis: batal*

Penunjuk ke buffer yang berisi data kueri. Pengguna bertanggung jawab untuk mengalokasikan ini. pData mungkin NULL hanya jika dwSize adalah 0.

[in] dwSize

Jenis: DWORD

Jumlah byte data dalam pData. Jika Anda mengatur dwSize ke nol, Anda dapat menggunakan metode ini untuk melakukan polling sumber daya untuk status kueri. Lihat keterangan.

[in] dwGetDataFlags

Jenis: DWORD

Bendera data yang menentukan jenis kueri. Nilai yang valid adalah 0 atau D3DGETDATA_FLUSH. Gunakan 0 untuk menghindari pembersihan kueri batch ke driver dan gunakan D3DGETDATA_FLUSH untuk melanjutkan dan membersihkannya. Untuk aplikasi yang menulis versi menunggu mereka sendiri, hasil kueri tidak direalisasikan sampai driver menerima flush.

Mengembalikan nilai

Jenis: HRESULT

Jenis pengembalian mengidentifikasi status kueri (lihat Kueri (Direct3D 9)). Metode mengembalikan S_OK jika data kueri tersedia dan S_FALSE jika tidak. Ini dianggap sebagai nilai pengembalian yang berhasil. Jika metode gagal saat D3DGETDATA_FLUSH digunakan, nilai yang dikembalikan dapat D3DERR_DEVICELOST.

Keterangan

Dimungkinkan untuk kehilangan perangkat saat melakukan polling untuk status kueri. Ketika D3DGETDATA_FLUSH ditentukan, metode ini akan mengembalikan D3DERR_DEVICELOST sebagai respons terhadap perangkat yang hilang. Ini memungkinkan aplikasi untuk mencegah utas melakukan polling tanpa henti karena perangkat yang hilang (yang tidak dapat merespons kueri).

Aplikasi tidak boleh menulis kode yang hanya memanggil GetData ( ... , 0 ), mengharapkan bahwa GetData pada akhirnya akan kembali S_OK dengan sendirinya dari waktu ke waktu. Ini benar, bahkan jika aplikasi telah menggunakan bendera FLUSH dengan GetData di masa lalu. Contohnya:

// Enables an infinite loop:
while( pQuery->GetData( ... , 0 ) == S_FALSE ) ;

// Still enables an infinite loop:
pQuery->GetData( ... , D3DGETDATA_FLUSH );
while( pQuery->GetData( ... , 0 ) == S_FALSE ) ;

// Does not enable an infinite loop because eventually the command
// buffer will fill up and that will cause a flush to occur.
while( pQuery->GetData( ..., 0 ) == S_FALSE ) {
	pDevice->SetTexture(...);
	pDevice->Draw(...);
}

Persyaratan

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

Lihat juga

IDirect3DQuery9