Bagikan melalui


Fungsi D3DX11CompileFromFile

Catatan

Pustaka utilitas D3DX (D3DX 9, D3DX 10, dan D3DX 11) tidak digunakan lagi untuk Windows 8 dan tidak didukung untuk aplikasi Windows Store.

Catatan

Alih-alih menggunakan fungsi ini, kami sarankan Anda mengompilasi offline dengan menggunakan pengompilasi baris perintah Fxc.exe atau menggunakan salah satu API kompilasi HLSL, seperti API D3DCompileFromFile .

Mengkompilasi shader atau efek dari file.

Sintaks

HRESULT D3DX11CompileFromFile(
  _In_        LPCTSTR            pSrcFile,
  _In_  const D3D10_SHADER_MACRO *pDefines,
  _In_        LPD3D10INCLUDE     pInclude,
  _In_        LPCSTR             pFunctionName,
  _In_        LPCSTR             pProfile,
  _In_        UINT               Flags1,
  _In_        UINT               Flags2,
  _In_        ID3DX11ThreadPump  *pPump,
  _Out_       ID3D10Blob         **ppShader,
  _Out_       ID3D10Blob         **ppErrorMsgs,
  _Out_       HRESULT            *pHResult
);

Parameter

pSrcFile [in]

Jenis: LPCTSTR

Nama file yang berisi kode shader. Jika pengaturan pengkompilasi memerlukan Unicode, jenis data LPCTSTR diselesaikan ke LPCWSTR. Jika tidak, jenis data diselesaikan ke LPCSTR.

pDefines [in]

Jenis: const D3D10_SHADER_MACRO*

Pilihan. Penunjuk ke array definisi makro (lihat D3D10_SHADER_MACRO). Struktur terakhir dalam array berfungsi sebagai terminator dan harus mengatur semua anggota ke 0. Jika tidak digunakan, atur pDefines ke NULL.

pInclude [in]

Jenis: LPD3D10INCLUDE

Pilihan. Penunjuk ke antarmuka untuk penanganan mencakup file. Mengatur ini ke NULL akan menyebabkan kesalahan kompilasi jika shader berisi #include.

pFunctionName [in]

Jenis: LPCSTR

Nama fungsi titik masuk shader tempat eksekusi shader dimulai. Saat Anda mengompilasi efek, D3DX11CompileFromFile mengabaikan pFunctionName; kami menyarankan agar Anda mengatur pFunctionName ke NULL karena ini adalah praktik pemrograman yang baik untuk mengatur parameter pointer ke NULL jika fungsi yang dipanggil tidak akan menggunakannya.

pProfile [in]

Jenis: LPCSTR

String yang menentukan model shader; dapat berupa profil apa pun dalam model shader 2, model shader 3, model shader 4, atau model shader 5. Profil juga dapat untuk jenis efek (misalnya, fx_4_1).

Bendera1 [in]

Jenis: UINT

Bendera kompilasi shader.

Flags2 [in]

Jenis: UINT

Bendera kompilasi efek. Saat Anda mengompilasi shader dan bukan file efek, D3DX11CompileFromFile 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.

pPump [in]

Jenis: ID3DX11ThreadPump*

Penunjuk ke antarmuka pompa utas (lihat Antarmuka ID3DX11ThreadPump). Gunakan NULL untuk menentukan bahwa fungsi ini tidak boleh kembali sampai selesai.

ppShader [out]

Jenis: ID3D10Blob**

Pointer ke memori yang berisi shader yang dikompilasi, serta informasi debug dan tabel simbol yang disematkan.

ppErrorMsgs [out]

Jenis: ID3D10Blob**

Pointer ke memori yang berisi daftar kesalahan dan peringatan yang terjadi selama kompilasi. Kesalahan dan peringatan ini identik dengan output debug dari debugger.

pHResult [out]

Jenis: HRESULT*

Penunjuk ke nilai yang dikembalikan. Mungkin NULL. Jika pPump bukan NULL, maka pHResult harus menjadi lokasi memori yang valid hingga eksekusi asinkron selesai.

Mengembalikan nilai

Jenis: HRESULT

Nilai yang dikembalikan adalah salah satu nilai yang tercantum dalam Direct3D 11 Return Codes.

D3DX11CompileFromFile mengembalikan E_INVALIDARG jika Anda menyediakan nilai non-NULL ke parameter pHResult saat Anda menyediakan NULL ke parameter pPump . Untuk informasi selengkapnya tentang situasi ini, lihat Komentar.

Keterangan

Untuk informasi selengkapnya tentang D3DX11CompileFromFile, lihat D3DCompile.

Anda harus menyediakan NULL ke parameter pHResult jika Anda juga menyediakan NULL ke parameter pPump . Jika tidak, Anda tidak dapat membuat shader dengan menggunakan kode shader yang dikompilasi yang dikembalikan D3DX11CompileFromFile dalam memori yang ditunjuk parameter ppShader . Untuk membuat shader dari kode shader yang sesuai, Anda memanggil salah satu metode antarmuka ID3D11Device berikut:

Selain itu, jika Anda menyediakan nilai non-NULL ke pHResult saat Anda menyediakan NULL ke pPump, D3DX11CompileFromFile mengembalikan kode kesalahan E_INVALIDARG.

Persyaratan

Persyaratan Nilai
Header
D3DX11async.h
Pustaka
D3DX11.lib

Lihat juga

Fungsi D3DX