Поделиться через


Метод 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::SetBool или ID3DXBaseEffect::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