ID3DXEffectCompiler::SetLiteral-Methode
Schaltet die literale status eines Parameters um. Ein Literalparameter hat einen Wert, der sich während der Lebensdauer eines Effekts nicht ändert.
Syntax
HRESULT SetLiteral(
[in] D3DXHANDLE hParameter,
[in] BOOL Literal
);
Parameter
-
hParameter [in]
-
Typ: D3DXHANDLE
Eindeutiger Bezeichner für einen Parameter. Siehe Handles (Direct3D 9).
-
Literal [in]
-
Typ: BOOL
Legen Sie true fest, um den Parameter zum Literal zu machen, und auf FALSE , wenn der Parameter den Wert während der Shaderlebensdauer ändern kann.
Rückgabewert
Typ: HRESULT
Wenn die Methode erfolgreich ist, wird der Rückgabewert D3D_OK. Wenn die Methode fehlschlägt, kann der Rückgabewert D3DERR_INVALIDCALL werden.
Bemerkungen
Diese Methoden ändern nur, ob der Parameter ein Literal ist oder nicht. Um den Wert eines Parameters zu ändern, verwenden Sie eine Methode wie ID3DXBaseEffect::SetBool oder ID3DXBaseEffect::SetValue.
Diese Funktion muss aufgerufen werden, bevor der Effekt kompiliert wird. Hier sehen Sie ein Beispiel für die Verwendung dieser Funktion:
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);
}
Anforderungen
Anforderung | Wert |
---|---|
Header |
|
Bibliothek |
|
Siehe auch