次の方法で共有


ID3DXEffectCompiler::SetLiteral メソッド

パラメーターのリテラルの状態を切り替えます。 リテラル パラメーターには、効果の有効期間中に変更されない値があります。

構文

HRESULT SetLiteral(
  [in] D3DXHANDLE hParameter,
  [in] BOOL       Literal
);

パラメーター

hParameter [in]

型: D3DXHANDLE

パラメーターの一意識別子。 「ハンドル (Direct3D 9)」を参照してください。

リテラル [in]

種類: BOOL

パラメーターをリテラルにするには TRUE に設定し、シェーダーの有効期間中にパラメーターが値を変更できる場合は FALSE に設定します。

戻り値

種類: HRESULT

メソッドが成功した場合、戻り値は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

関連項目

ID3DXEffectCompiler

使用法とリテラル (Direct3D 9)

ID3DXEffectCompiler::GetLiteral