ID3DXEffectCompiler::SetLiteral
パラメーターのリテラル ステータスを切り替えます。リテラル パラメーターの値は、エフェクトの有効期間中は変更されません。
HRESULT
SetLiteral(
D3DXHANDLE hParameter,
BOOL Literal
);
パラメータ
- hParameter
パラメーターの一意の識別子です。「ハンドル (Direct3D 9)」を参照してください。 - Literal
TRUE に設定すると、パラメーターがリテラルにまります。シェーダーの有効期間中にパラメーターが値を変化させる場合は FALSE に設定します。
戻り値
メソッドが成功した場合は、D3D_OK を返します。失敗した場合は、D3DERR_INVALIDCALL を返します。
解説
このメソッドは、パラメーターをリテラルにしたり、リテラル以外にしたりします。パラメーターの値を変更するには、ID3DXBaseEffect::SetBool または ID3DXBaseEffect::SetValue などのメソッドを使用します。
この関数は、エフェクトがコンパイルされる前に呼び出される必要があります。以下に、この関数の使用例を示します。
LPD3DXEFFECTCOMPILER pEffectCompiler; char errors[1000]; HRESULT hr; hr = D3DXCreateEffectCompilerFromFile("shader.fx", NULL, NULL, 0, &pEffectCompiler, &errors); //In the fx file, literalInt is declared as an int. //By calling this function, the compiler will treat //it as a literal (i.e. #define) hr = pEffectCompiler->SetLiteral("literalInt", TRUE); //create ten different variations of the same effect LPD3DXBUFFER pEffects[10]; LPD3DXBUFFER pErrors; for(int i = 0; i < 10; ++i) { hr = pEffectCompiler->SetInt("literalInt", i); hr = pEffectCompiler->CompileEffect(0, &pEffects[i], &pErrors); }
要件
ヘッダー: D3DX9Shader.h 宣言
ライブラリ: D3dx9.lib 内容