Fungsi D3DCompile (d3dcompiler.h)

Kompilasi kode HLSL atau file efek ke dalam bytecode untuk target tertentu.

Sintaks

HRESULT D3DCompile(
  [in]            LPCVOID                pSrcData,
  [in]            SIZE_T                 SrcDataSize,
  [in, optional]  LPCSTR                 pSourceName,
  [in, optional]  const D3D_SHADER_MACRO *pDefines,
  [in, optional]  ID3DInclude            *pInclude,
  [in, optional]  LPCSTR                 pEntrypoint,
  [in]            LPCSTR                 pTarget,
  [in]            UINT                   Flags1,
  [in]            UINT                   Flags2,
  [out]           ID3DBlob               **ppCode,
  [out, optional] ID3DBlob               **ppErrorMsgs
);

Parameter

[in] pSrcData

Jenis: LPCVOID

Penunjuk ke data shader yang tidak dikompresi; kode ASCII HLSL atau efek yang dikompilasi.

[in] SrcDataSize

Jenis: SIZE_T

Panjang pSrcData.

[in, optional] pSourceName

Jenis: LPCSTR

Anda dapat menggunakan parameter ini untuk string yang menentukan pesan kesalahan. Jika tidak digunakan, atur ke NULL.

[in, optional] pDefines

Jenis: const D3D_SHADER_MACRO*

Array opsional struktur D3D_SHADER_MACRO yang menentukan makro shader. Setiap definisi makro berisi nama dan definisi yang dihentikan null. Jika tidak digunakan, atur ke NULL. Struktur terakhir dalam array berfungsi sebagai terminator dan harus mengatur semua anggota ke NULL.

[in, optional] pInclude

Jenis: ID3DInclude*

Pilihan. Pointer ke ID3DInclude untuk penanganan menyertakan file. Mengatur ini ke NULL akan menyebabkan kesalahan kompilasi jika shader berisi #include. Anda bisa meneruskan makro D3D_COMPILE_STANDARD_FILE_INCLUDE , yang merupakan penunjuk ke penangan sertakan default. Default ini termasuk handler mencakup file yang relatif terhadap direktori saat ini dan file yang relatif terhadap direktori file sumber awal. Saat menggunakan D3D_COMPILE_STANDARD_FILE_INCLUDE, Anda harus menentukan nama file sumber dalam parameter pSourceName ; pengkompilasi akan memperoleh direktori relatif awal dari pSourceName.

#define D3D_COMPILE_STANDARD_FILE_INCLUDE ((ID3DInclude*)(UINT_PTR)1)

[in, optional] pEntrypoint

Jenis: LPCSTR

Nama fungsi titik entri shader tempat eksekusi shader dimulai. Saat Anda mengkompilasi menggunakan profil fx (misalnya, fx_4_0, fx_5_0, dan sebagainya), D3DCompile mengabaikan pEntrypoint. Dalam hal ini, kami sarankan Anda mengatur pEntrypoint ke NULL karena ini adalah praktik pemrograman yang baik untuk mengatur parameter penunjuk ke NULL jika fungsi yang dipanggil tidak akan menggunakannya. Untuk semua profil shader lainnya, diperlukan pEntrypoint yang valid.

[in] pTarget

Jenis: LPCSTR

String yang menentukan target shader atau set fitur shader untuk dikompilasi. Target shader dapat berupa model shader 2, model shader 3, model shader 4, atau model shader 5. Target juga bisa menjadi jenis efek (misalnya, fx_4_1). Untuk informasi tentang target yang didukung berbagai profil, lihat Menentukan Target Pengkompilasi.

[in] Flags1

Jenis: UINT

Bendera yang ditentukan oleh konstanta kompilasi D3D.

[in] Flags2

Jenis: UINT

Bendera yang ditentukan oleh konstanta efek kompilasi D3D. Saat Anda mengkompilasi shader dan bukan file efek, D3DCompile mengabaikan Flags2; kami menyarankan agar Anda mengatur Flags2 ke nol karena ini adalah praktik pemrograman yang baik untuk mengatur parameter nonpointer ke nol jika fungsi yang dipanggil tidak akan menggunakannya.

[out] ppCode

Jenis: ID3DBlob**

Pointer ke variabel yang menerima pointer ke antarmuka ID3DBlob yang dapat Anda gunakan untuk mengakses kode yang dikompilasi.

[out, optional] ppErrorMsgs

Jenis: ID3DBlob**

Penunjuk ke variabel yang menerima pointer ke antarmuka ID3DBlob yang dapat Anda gunakan untuk mengakses pesan kesalahan pengkompilasi, atau NULL jika tidak ada kesalahan.

Mengembalikan nilai

Jenis: HRESULT

Mengembalikan salah satu kode pengembalian Direct3D 11.

Keterangan

Perbedaan antara D3DCompile dan D3DCompile2 adalah bahwa metode terakhir mengambil beberapa parameter opsional yang dapat digunakan untuk mengontrol beberapa aspek bagaimana bytecode dihasilkan. Jika fleksibilitas tambahan ini tidak diperlukan, tidak ada perolehan performa dari penggunaan D3DCompile2.

Persyaratan

Persyaratan Nilai
Target Platform Windows
Header d3dcompiler.h
Pustaka d3dcompiler.lib
DLL d3dcompiler_47.dll

Lihat juga

Fungsi