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」をご覧ください。
要件
要件 | 値 |
---|---|
ヘッダー |
|
ライブラリ |
|
関連項目