共用方式為


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