Freigeben über


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
D3DX9Shader.h
Bibliothek
D3dx9.lib

Siehe auch

ID3DXEffectCompiler

Verwendungen und Literale (Direct3D 9)

ID3DXEffectCompiler::GetLiteral