Partager via


ID3DXEffectCompiler::SetLiteral, méthode

Bascule le status littéral d’un paramètre. Un paramètre littéral a une valeur qui ne change pas pendant la durée de vie d’un effet.

Syntaxe

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

Paramètres

hParameter [in]

Type : D3DXHANDLE

Identificateur unique d’un paramètre. Consultez Handles (Direct3D 9).

Littéral [in]

Type : BOOL

Définissez sur TRUE pour faire du paramètre un littéral, et FALSE si le paramètre peut changer de valeur pendant la durée de vie du nuanceur.

Valeur retournée

Type : HRESULT

Si la méthode réussit, la valeur de retour est D3D_OK. Si la méthode échoue, la valeur de retour peut être D3DERR_INVALIDCALL.

Notes

Cette méthode change uniquement si le paramètre est un littéral ou non. Pour modifier la valeur d’un paramètre, utilisez une méthode telle que ID3DXBaseEffect::SetBool ou ID3DXBaseEffect::SetValue.

Cette fonction doit être appelée avant la compilation de l’effet. Voici un exemple d’utilisation de cette fonction :

    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);
    }

Spécifications

Condition requise Valeur
En-tête
D3DX9Shader.h
Bibliothèque
D3dx9.lib

Voir aussi

ID3DXEffectCompiler

Utilisations et littéraux (Direct3D 9)

ID3DXEffectCompiler::GetLiteral