Condividi tramite


Metodo ID3DXEffectCompiler::SetLiteral

Attiva lo stato letterale di un parametro. Un parametro letterale ha un valore che non cambia durante la durata di un effetto.

Sintassi

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

Parametri

hParameter [in]

Tipo: D3DXHANDLE

Identificatore univoco di un parametro. Vedere Handle (Direct3D 9).

Valore letterale [in]

Tipo: BOOL

Impostare su TRUE per rendere il parametro un valore letterale e FALSE se il parametro può modificare il valore durante la durata dello shader.

Valore restituito

Tipo: HRESULT

Se il metodo ha esito positivo, il valore restituito è D3D_OK. Se il metodo ha esito negativo, il valore restituito può essere D3DERR_INVALIDCALL.

Commenti

Questo metodo modifica solo se il parametro è un valore letterale o meno. Per modificare il valore di un parametro, usare un metodo come ID3DXBaseEffect::SetBool o ID3DXBaseEffect::SetValue.

Questa funzione deve essere chiamata prima della compilazione dell'effetto. Ecco un esempio di come usare questa funzione:

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

Requisiti

Requisito Valore
Intestazione
D3DX9Shader.h
Libreria
D3dx9.lib

Vedi anche

ID3DXEffectCompiler

Utilizzo e valori letterali (Direct3D 9)

ID3DXEffectCompiler::GetLiteral