次の方法で共有


ID3DXEffectCompiler::CompileShader メソッド

1 つ以上の関数を含む効果からシェーダーをコンパイルします。

構文

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

パラメーター

hFunction [in]

型: D3DXHANDLE

コンパイルする関数の一意識別子。 この値は NULL にすることはできません。 「ハンドル (Direct3D 9)」を参照してください。

pTarget [in]

種類: LPCSTR

シェーダー命令セットを決定するシェーダー プロファイルへのポインター。 使用可能なプロファイルの一覧については、「 D3DXGetVertexShaderProfile 」または「 D3DXGetPixelShaderProfile 」を参照してください。

Flags [in]

型: DWORD

さまざまなフラグで識別されるコンパイル オプション。 Direct3D 10 HLSL コンパイラが既定になりました。 詳細については、「 D3DXSHADER フラグ 」を参照してください。

ppShader [out, retval]

種類: LPD3DXBUFFER*

コンパイルされたシェーダーを含むバッファー。 コンパイラ シェーダーは DWORD の配列です。 バッファーへのアクセスの詳細については、「 ID3DXBuffer」を参照してください。

ppErrorMsgs [out, retval]

種類: LPD3DXBUFFER*

発生した最初のコンパイル エラー メッセージを少なくとも含むバッファー。 これには、効果コンパイラ エラーと高レベルの言語コンパイル エラーが含まれます。 バッファーへのアクセスの詳細については、「 ID3DXBuffer」を参照してください。

ppConstantTable [out]

種類: LPD3DXCONSTANTTABLE*

シェーダー定数にアクセスするために使用できる ID3DXConstantTable インターフェイスを返します。 この値には NULL を指定できます。 アプリケーションを大きなアドレス対応としてコンパイルする場合 (つまり、/LARGEADDRESSAWARE リンカー オプションを使用して 2 GB を超えるアドレスを処理する場合)、このパラメーターを使用できず、 NULL に設定する必要があります。 代わりに、 D3DXGetShaderConstantTableEx 関数を使用して、シェーダー内に埋め込まれているシェーダー定数テーブルを取得する必要があります。 この D3DXGetShaderConstantTableEx 呼び出しでは、 D3DXCONSTTABLE_LARGEADDRESSAWARE フラグを Flags パラメーターに渡して、最大 4 GB の仮想アドレス空間にアクセスするように指定する必要があります。

戻り値

型: HRESULT

メソッドが成功した場合、戻り値はS_OK。

引数が無効な場合、メソッドは D3DERR_INVALIDCALLを返します。

メソッドが失敗した場合、戻り値はE_FAILされます。

解説

ターゲットは、頂点シェーダー、ピクセル シェーダー、テクスチャ塗りつぶし関数に指定できます。

対象サーバー 機能
頂点シェーダー ターゲット vs_1_1、vs_2_0、vs_2_sw、vs_3_0
ピクセル シェーダー ターゲット ps_1_1、ps_1_2、ps_1_3、ps_1_4、ps_2_0、ps_2_sw、ps_3_0
テクスチャ塗りつぶしターゲット tx_0、tx_1

 

このメソッドは、C に似た言語で記述された関数からシェーダーをコンパイルします。 詳しくは、「HLSL」をご覧ください。

要件

要件
ヘッダー
D3DX9Effect.h
ライブラリ
D3dx9.lib

関連項目

ID3DXEffectCompiler

D3DXGetShaderConstantTable