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 |