Метод 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);
}
Требования
Требование | Значение |
---|---|
Заголовок |
|
Библиотека |
|
См. также раздел