Fungsi D3DX11CompileFromMemory

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 mengkompilasi offline dengan menggunakan pengkompilasi baris perintah Fxc.exe atau menggunakan salah satu API kompilasi HLSL, seperti API D3DCompile .

Kompilasi shader atau efek yang dimuat dalam memori.

Sintaks

HRESULT D3DX11CompileFromMemory(
  _In_        LPCSTR             pSrcData,
  _In_        SIZE_T             SrcDataLen,
  _In_        LPCSTR             pFileName,
  _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

pSrcData [in]

Jenis: LPCSTR

Arahkan ke shader dalam memori.

SrcDataLen [in]

Jenis: SIZE_T

Ukuran shader dalam memori.

pFileName [in]

Jenis: LPCSTR

Nama file yang berisi kode shader.

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

Opsional. 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, D3DX11CompileFromMemory 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, D3DX11CompileFromMemory 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.

Nilai kembali

Jenis: HRESULT

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

D3DX11CompileFromMemory mengembalikan E_INVALIDARG jika Anda menyediakan 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 D3DX11CompileFromMemory, lihat D3DCompile.

Anda harus menyediakan NULL ke parameter pHResult jika Anda juga menyediakan NULL ke parameter pPump . Jika tidak, Anda kemudian tidak dapat membuat shader dengan menggunakan kode shader yang dikompilasi yang dikembalikan D3DX11CompileFromMemory 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, D3DX11CompileFromMemory mengembalikan kode kesalahan E_INVALIDARG.

Persyaratan

Persyaratan Nilai
Header
D3DX11async.h
Pustaka
D3DX11.lib

Lihat juga

Fungsi D3DX