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);
}
要求
要求 | 值 |
---|---|
标头 |
|
库 |
|
另请参阅