ID3DXEffectCompiler::SetLiteral 方法

切换参数的文本状态。 文本参数的值在效果的生存期内不会更改。

语法

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

参数

hParameter [in]

类型: D3DXHANDLE

参数的唯一标识符。 请参阅 处理 (Direct3D 9)

文本 [in]

类型: BOOL

设置为 TRUE 可将参数设置为文本;如果参数可以在着色器生存期内更改值,则设置为 FALSE

返回值

类型: HRESULT

如果该方法成功,则返回值D3D_OK。 如果方法失败,则可以D3DERR_INVALIDCALL返回值。

备注

此方法仅更改参数是否为文本。 若要更改参数的值,请使用 ID3DXBaseEffect::SetBoolID3DXBaseEffect::SetValue 等方法。

在编译效果之前,必须调用此函数。 下面是如何使用此函数的示例:

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

要求

要求
标头
D3DX9Shader.h

D3dx9.lib

另请参阅

ID3DXEffectCompiler

Direct3D 9) (用法和文本

ID3DXEffectCompiler::GetLiteral