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 |