共用方式為


D3DXCreateEffectFromFileEx 函式

從 ASCII 或二進位效果描述建立效果。 此函式是 D3DXCreateEffectFromFile 的擴充版本,可讓應用程式控制效果系統忽略哪些參數。

語法

HRESULT D3DXCreateEffectFromFileEx(
  _In_        LPDIRECT3DDEVICE9 pDevice,
  _In_        LPCTSTR           pSrcFile,
  _In_  const D3DXMACRO         *pDefines,
  _In_        LPD3DXINCLUDE     pInclude,
  _In_        LPCSTR            pSkipConstants,
  _In_        DWORD             Flags,
  _In_        LPD3DXEFFECTPOOL  pPool,
  _Out_       LPD3DXEFFECT      *ppEffect,
  _Out_       LPD3DXBUFFER      *ppCompilationErrors
);

參數

pDevice [in]

類型: LPDIRECT3DDEVICE9

將建立效果之裝置的指標。 請參閱 IDirect3DDevice9

pSrcFile [in]

類型: LPCTSTR

檔案名的指標。 此參數同時支援 Unicode 和 ANSI 字串。 請參閱<備註>。

pDefines [in]

類型:const D3DXMACRO*

選擇性 Null 終止的預處理器巨集定義陣列。 請參閱 D3DXMACRO

pInclude [in]

類型: LPD3DXINCLUDE

選擇性介面指標 ID3DXInclude,用於處理#include指示詞。 如果此值為 Null,則從檔案編譯時#includes會接受,或從資源或記憶體編譯時造成錯誤。

pSkipConstants [in]

類型: LPCSTR

效果參數的字串,由效果系統忽略。 字串必須以 Null 終止,而且必須包含以分號分隔的每個應用程式管理常數名稱。

旗標 [in]

類型: DWORD

如果 pSrcFile 包含文字效果,旗標可以是 D3DXSHADER 旗 標和 D3DXFX 旗標的組合;否則, pSrcFile 包含二進位效果,唯一接受的旗標是 D3DXFX 旗標。 Direct3D 10 HLSL 編譯器現在是預設值。 如需詳細資訊,請參閱 Effect-Compiler Tool

pPool [in]

類型: LPD3DXEFFECTPOOL

要用於共用參數的 ID3DXEffectPool 物件的指標。 如果此值為 Null,則不會共用任何參數。

ppEffect [out]

類型: LPD3DXEFFECT*

傳回包含已編譯效果之緩衝區的指標。 請參閱 ID3DXEffect

ppCompilationErrors [out]

類型: LPD3DXBUFFER*

傳回包含編譯錯誤清單之緩衝區的指標。 請參閱 ID3DXBuffer

傳回值

類型: HRESULT

如果函式成功,傳回值會D3D_OK。 如果函式失敗,傳回值可以是下列其中一項:D3DERR_INVALIDCALL、D3DXERR_INVALIDDATA E_OUTOFMEMORY。

備註

此函式是 D3DXCreateEffectFromFile 的擴充版本,可讓應用程式指定應用程式將管理哪些效果常數。 效果系統會忽略由應用程式管理的常數。 也就是說,應用程式會負責初始化常數,並在適當時儲存和還原其狀態。

此函式會檢查 pSkipConstants 中的每個常數,以查看:

  • 它會系結至常數暫存器。
  • 它只適用于 HLSL 著色器程式碼。

如果常數在效果中不存在的字串中命名,則會予以忽略。

如果編譯器設定需要 Unicode,LPCTSTR 資料類型會解析為 LPCWSTR。 否則,LPCTSTR 資料類型會解析為 LPCSTR。

編譯器設定也會決定函式版本。 如果定義 Unicode,函式呼叫會解析為 D3DXCreateEffectFromFileW。 否則,函式呼叫會解析為 D3DXCreateEffectFromFileA,因為正在使用 ANSI 字串。

規格需求

需求
標頭
D3DX9Effect.h
程式庫
D3dx9.lib

另請參閱

效果函式

D3DXCreateEffectEx

D3DXCreateEffectFromResourceEx