Bagikan melalui


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)

Lihat juga

D3DHAL_DP2COMMAND

D3DRENDERSTATETYPE

D3dDrawPrimitives2

DD_SURFACE_GLOBAL

DD_SURFACE_LOCAL