struktur D3DHAL_DRAWPRIMITIVES2DATA (d3dhal.h)
Struktur D3DHAL_DRAWPRIMITIVES2DATA berisi informasi yang diperlukan oleh fungsi D3dDrawPrimitives2 untuk merender primitif.
Sintaks
typedef struct _D3DHAL_DRAWPRIMITIVES2DATA {
ULONG_PTR dwhContext;
DWORD dwFlags;
DWORD dwVertexType;
LPDDRAWI_DDRAWSURFACE_LCL lpDDCommands;
DWORD dwCommandOffset;
DWORD dwCommandLength;
union {
LPDDRAWI_DDRAWSURFACE_LCL lpDDVertex;
LPVOID lpVertices;
};
DWORD dwVertexOffset;
DWORD dwVertexLength;
DWORD dwReqVertexBufSize;
DWORD dwReqCommandBufSize;
LPDWORD lpdwRStates;
union {
DWORD dwVertexSize;
HRESULT ddrval;
};
DWORD dwErrorOffset;
} D3DHAL_DRAWPRIMITIVES2DATA;
Anggota
dwhContext
Menentukan handel konteks perangkat Direct3D.
dwFlags
Menentukan bendera yang memberikan instruksi tambahan kepada driver atau memberikan informasi dari driver. Anggota ini bisa menjadi bitwise ATAU dari nilai berikut:
Nilai | Makna |
---|---|
D3DHALDP2_EXECUTEBUFFER | Buffer perintah dan vertex dibuat dalam memori sistem. Driver harus memperbarui array status yang dirujuk lpdwRStates. Bendera ini hanya diatur oleh Direct3D. |
D3DHALDP2_REQCOMMANDBUFSIZE | Driver harus dapat meningkatkan buffer perintah saat ini setidaknya dengan ukuran yang ditentukan dalam dwReqCommandBufSize. Driver yang tidak mendukung multibuffer buffer perintah dapat mengabaikan bendera ini. Bendera ini hanya diatur oleh Direct3D. |
D3DHALDP2_REQVERTEXBUFSIZE | Driver harus dapat mengalokasikan buffer vertex setidaknya dengan ukuran yang ditentukan dalam dwReqCommandBufSize. Driver yang tidak mendukung multibuffer buffer vertex dapat mengabaikan bendera ini. Bendera ini hanya diatur oleh Direct3D. |
D3DHALDP2_SWAPCOMMANDBUFFER | Driver dapat menukar buffer yang ditujukan lpDDCommands dengan buffer perintah baru dan segera kembali, secara asinkron memproses buffer asli sementara Direct3D mengisi buffer perintah baru. Driver yang tidak mendukung multibuffer buffer perintah dapat mengabaikan bendera ini. Bendera ini hanya diatur oleh Direct3D. |
D3DHALDP2_SWAPVERTEXBUFFER | Driver dapat menukar buffer yang ditujukan lpDDVertex atau lpVertices dengan buffer vertex baru dan segera kembali, secara asinkron memproses buffer asli sementara Direct3D mengisi buffer vertex baru. Driver yang tidak mendukung multibuffer buffer vertex dapat mengabaikan bendera ini. Bendera ini hanya diatur oleh Direct3D. |
D3DHALDP2_USERMEMVERTICES | Anggota lpVertices valid sehingga driver harus mendapatkan data puncak dari memori yang dialokasikan pengguna yang dituju lpVertices. Bendera ini hanya diatur oleh Direct3D. |
D3DHALDP2_VIDMEMCOMMANDBUF | Buffer perintah yang dialokasikan oleh driver sebagai buffer swap tidak ada dalam memori sistem. Bendera ini dapat diatur oleh driver yang mendukung multibuffering buffer perintah. |
D3DHALDP2_VIDMEMVERTEXBUF | Buffer vertex yang dialokasikan oleh driver sebagai buffer swap tidak ada dalam memori sistem. Bendera ini dapat diatur oleh driver yang mendukung multibuffering buffer vertex. |
dwVertexType
Mengidentifikasi FVF data dalam buffer vertex; artinya, dwVertexType menentukan bidang data per-vertex mana yang ada di buffer vertex yang dituju lpDDVertex atau lpVertices . Anggota ini bisa menjadi bitwise ATAU dari nilai dalam tabel berikut. Hanya salah satu bendera D3DFVF_TEXx yang ditetapkan.
Nilai | Makna |
---|---|
D3DFVF_DIFFUSE | Setiap puncak memiliki warna yang berbeda. |
D3DFVF_SPECULAR | Setiap puncak memiliki warna spekular. |
D3DFVF_TEX0 | Tidak ada koordinat tekstur yang disediakan dengan data puncak. |
D3DFVF_TEX1 | Setiap puncak memiliki satu set koordinat tekstur. |
D3DFVF_TEX2 | Setiap puncak memiliki dua set koordinat tekstur. |
D3DFVF_TEX3 | Setiap puncak memiliki tiga set koordinat tekstur. |
D3DFVF_TEX4 | Setiap puncak memiliki empat set koordinat tekstur. |
D3DFVF_TEX5 | Setiap puncak memiliki lima set koordinat tekstur. |
D3DFVF_TEX6 | Setiap puncak memiliki enam set koordinat tekstur. |
D3DFVF_TEX7 | Setiap puncak memiliki tujuh set koordinat tekstur. |
D3DFVF_TEX8 | Setiap puncak memiliki delapan set koordinat tekstur. |
D3DFVF_XYZRHW | Setiap puncak memiliki koordinat x, y, z, dan w. Bendera ini selalu diatur. |
lpDDCommands
dwCommandOffset
dwCommandLength
Menentukan jumlah byte data perintah yang valid di permukaan yang ditujukan lpDDCommands untuk memulai di dwCommandOffset.
lpDDVertex
Menunjuk ke struktur DD_SURFACE_LOCAL yang mengidentifikasi permukaan DirectDraw yang berisi data puncak saat bendera D3DHALDP2_USERMEMVERTICES tidak diatur dalam dwFlags. Membentuk serikat dengan lpVertices.
lpVertices
Menunjuk ke blok memori mode pengguna yang berisi data puncak saat bendera D3DHALDP2_USERMEMVERTICES diatur dalam dwFlags.
dwVertexOffset
Menentukan jumlah byte ke dalam permukaan yang diacak oleh lpDDVertex atau lpVertices tempat data puncak dimulai.
dwVertexLength
Menentukan jumlah simpul yang data validnya ada di permukaan yang ditujukan oleh lpDDVertex atau lpVertices. Data yang valid ini dimulai pada dwVertexOffset.
dwReqVertexBufSize
Menentukan jumlah minimum byte yang harus dialokasikan driver untuk buffer vertex swap. Anggota ini hanya valid ketika bendera D3DHALDP2_REQVERTEXBUFSIZE diatur. Driver yang tidak mendukung multibuffer buffer vertex harus mengabaikan anggota ini.
dwReqCommandBufSize
Menentukan jumlah minimum byte yang harus ditingkatkan oleh driver buffer perintah pertukaran. Anggota ini hanya valid ketika bendera D3DHALDP2_REQCOMMANDBUFSIZE diatur. Driver yang tidak mendukung multibuffering buffer perintah harus mengabaikan anggota ini.
lpdwRStates
Menunjuk ke array status render yang harus diperbarui driver saat mengurai perintah status render dari buffer perintah. Driver harus memperbarui array ini hanya ketika bendera D3DHALDP2_EXECUTEBUFFER diatur dalam dwFlags. Driver harus menggunakan jenis D3DRENDERSTATETYPE yang dijumlahkan untuk memperbarui elemen yang sesuai dari array status render.
dwVertexSize
Menentukan ukuran setiap puncak, dalam byte. Anggota ini membentuk gabungan dengan ddrval.
ddrval
Menentukan lokasi tempat driver menulis nilai pengembalian D3dDrawPrimitives2. D3D_OK menunjukkan keberhasilan. Jika tidak, driver harus mengembalikan kode kesalahan D3DERR_Xxx yang sesuai. Untuk informasi selengkapnya, lihat Mengembalikan Kode untuk Panggilan Balik Driver Direct3D.
Nilai | Makna |
---|---|
D3D_OK | Operasi berhasil diselesaikan. |
D3DERR_COMMAND_UNPARSED | Driver memerlukan runtime Direct3D untuk mengurai buffer eksekusi. |
dwErrorOffset
Setiap D3DHAL_DP2RESPONSEQUERY diikuti oleh data berikut yang terkait dengan kueri:
- BOOL untuk D3DQUERYTYPE_EVENT
- DWORD untuk D3DQUERYTYPE_OCCLUSION
- struktur D3DDEVINFO_VCACHE untuk D3DQUERYTYPE_VCACHE
Keterangan
Perhatikan bahwa anggota dwVertexOffset menentukan nilai dalam byte; anggota dwVertexLength menentukan nilai dalam simpul.
Untuk menghitung data yang valid, dalam byte, yang ada di permukaan di lpDDVertex atau lpVertices, kalikan nilai dalam dwVertexLength dengan nilai dalam dwVertexSize.
Persyaratan
Persyaratan | Nilai |
---|---|
Header | d3dhal.h (termasuk D3dhal.h) |