Metode ID3DXEffectCompiler::CompileShader

Mengkompilasi shader dari efek yang berisi satu atau beberapa fungsi.

Sintaks

HRESULT CompileShader(
  [in]          D3DXHANDLE          hFunction,
  [in]          LPCSTR              pTarget,
  [in]          DWORD               Flags,
  [out, retval] LPD3DXBUFFER        *ppShader,
  [out, retval] LPD3DXBUFFER        *ppErrorMsgs,
  [out]         LPD3DXCONSTANTTABLE *ppConstantTable
);

Parameter

hFunction [in]

Jenis: D3DXHANDLE

Pengidentifikasi unik untuk fungsi yang akan dikompilasi. Nilai ini tidak boleh NULL. Lihat Handel (Direct3D 9).

pTarget [in]

Jenis: LPCSTR

Penunjuk ke profil shader yang menentukan set instruksi shader. Lihat D3DXGetVertexShaderProfile atau D3DXGetPixelShaderProfile untuk daftar profil yang tersedia.

Bendera [in]

Jenis: DWORD

Opsi kompilasi yang diidentifikasi oleh berbagai bendera. Pengkompilasi Direct3D 10 HLSL sekarang menjadi default. Lihat Bendera D3DXSHADER untuk detailnya.

ppShader [out, retval]

Jenis: LPD3DXBUFFER*

Buffer yang berisi shader yang dikompilasi. Shader pengkompilasi adalah array DWORD. Untuk informasi selengkapnya tentang mengakses buffer, lihat ID3DXBuffer.

ppErrorMsgs [out, retval]

Jenis: LPD3DXBUFFER*

Buffer yang berisi setidaknya pesan kesalahan kompilasi pertama yang terjadi. Ini termasuk kesalahan kompilator efek dan kesalahan kompilasi bahasa tingkat tinggi. Untuk informasi selengkapnya tentang mengakses buffer, lihat ID3DXBuffer.

ppConstantTable [out]

Jenis: LPD3DXCONSTANTTABLE*

Mengembalikan antarmuka ID3DXConstantTable , yang dapat digunakan untuk mengakses konstanta shader. Nilai ini bisa NULL. Jika Anda mengkompilasi aplikasi Anda sebagai sadar alamat besar (yaitu, Anda menggunakan opsi linker /LARGEADDRESSAWARE untuk menangani alamat yang lebih besar dari 2 GB), Anda tidak dapat menggunakan parameter ini dan harus mengaturnya ke NULL. Sebagai gantinya, Anda harus menggunakan fungsi D3DXGetShaderConstantTableEx untuk mengambil tabel shader-constant yang disematkan di dalam shader. Dalam panggilan D3DXGetShaderConstantTableEx ini, Anda harus meneruskan bendera D3DXCONSTTABLE_LARGEADDRESSAWARE ke parameter Bendera untuk menentukan akses hingga 4 GB ruang alamat virtual.

Menampilkan nilai

Jenis: HRESULT

Jika metode berhasil, nilai yang dikembalikan S_OK.

Jika argumen tidak valid, metode akan mengembalikan D3DERR_INVALIDCALL.

Jika metode gagal, nilai yang dikembalikan akan E_FAIL.

Keterangan

Target dapat ditentukan untuk shader vertex, shader piksel, dan fungsi pengisian tekstur.

Target Fungsi
Target shader vertex vs_1_1, vs_2_0, vs_2_sw, vs_3_0
Target shader piksel ps_1_1, ps_1_2, ps_1_3, ps_1_4, ps_2_0, ps_2_sw, ps_3_0
Target pengisian tekstur tx_0, tx_1

 

Metode ini mengkompilasi shader dari fungsi yang ditulis dalam bahasa seperti C. Untuk informasi selengkapnya, lihat HLSL.

Persyaratan

Persyaratan Nilai
Header
D3DX9Effect.h
Pustaka
D3dx9.lib

Lihat juga

ID3DXEffectCompiler

D3DXGetShaderConstantTable