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);
}
規格需求
需求 | 值 |
---|---|
標頭 |
|
程式庫 |
|
另請參閱