Compartilhar via


Método ID3DXEffectCompiler::SetLiteral

Alterna a status literal de um parâmetro. Um parâmetro literal tem um valor que não é alterado durante o tempo de vida de um efeito.

Sintaxe

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

Parâmetros

hParameter [in]

Tipo: D3DXHANDLE

Identificador exclusivo para um parâmetro. Consulte Identificadores (Direct3D 9).

Literal [in]

Tipo: BOOL

Defina como TRUE para tornar o parâmetro um literal e FALSE se o parâmetro puder alterar o valor durante o tempo de vida do sombreador.

Valor retornado

Tipo: HRESULT

Se o método for bem-sucedido, o valor retornado será D3D_OK. Se o método falhar, o valor retornado poderá ser D3DERR_INVALIDCALL.

Comentários

Esses métodos só mudam se o parâmetro é um literal ou não. Para alterar o valor de um parâmetro, use um método como ID3DXBaseEffect::SetBool ou ID3DXBaseEffect::SetValue.

Essa função deve ser chamada antes que o efeito seja compilado. Aqui está um exemplo de como se pode usar essa função:

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

Requisitos

Requisito Valor
parâmetro
D3DX9Shader.h
Biblioteca
D3dx9.lib

Confira também

ID3DXEffectCompiler

Usos e literais (Direct3D 9)

ID3DXEffectCompiler::GetLiteral