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 |
|
Libreria |
|
Vedi anche