效果组语法 (Direct3D 11)
使用本节中所述的语法声明效果组。
fxgroup GroupName [ <Annotations > ]
{
TechniqueVersion TechniqueName [ <Annotations > ]
{
...
}
TechniqueVersion TechniqueName [ <Annotations > ]
{
...
}
}
参数
项 | 说明 |
---|---|
fxgroup |
等价关键字 (keyword) 。 |
GroupName |
必需。 唯一标识效果组名称的 ASCII 字符串。 与技术不同,组必须具有名称,以确保技术具有唯一标识符 (请参阅下面的组和技术部分) 。 |
< 注释 > |
[in] 可选。 效果系统忽略的一个或多个用户提供的信息 (元数据) 。 有关语法,请参阅 Direct3D 11) (注释语法。 |
技术版本 |
“技术 10”或“技术 11”。 使用 Direct3D 11 (5_0 着色器、BindInterfaces 等) 新功能的技术必须使用“技术11”。 |
技术名称 |
可选。 唯一标识效果技术名称的 ASCII 字符串。 |
组和技术
为了保持与fx_4_0效果的兼容性,组是可选的。 所有全局技术周围都有一个名为 NULL 的隐式组。
请考虑以下示例:
technique11 GlobalTech
{
}
fxgroup Group1
{
technique11 Tech1 { ... }
technique11 Tech2 { ... }
}
fxgroup Group2
{
technique11 Tech1 { ... }
technique11 Tech2 { ... }
}
在 C++ 中,可以通过两种方式按名称获取技术。 以下命令将发现明显的技术:
pEffect->GetTechniqueByName( "GlobalTech" );
pEffect->GetTechniqueByName( "|GlobalTech" );
pEffect->GetTechniqueByName( "Group1|Tech1" );
pEffect->GetTechniqueByName( "Group1|Tech2" );
pEffect->GetTechniqueByName( "Group2|Tech1" );
pEffect->GetTechniqueByName( "Group2|Tech2" );
pEffect->GetGroupByName("Group1")->GetTechniqueByName( "Tech1" );
pEffect->GetGroupByName("Group1")->GetTechniqueByName( "Tech2" );
pEffect->GetGroupByName("Group2")->GetTechniqueByName( "Tech1" );
pEffect->GetGroupByName("Group2")->GetTechniqueByName( "Tech2" );
为了确保 ID3DX11Effect::GetTechniqueByName 的工作方式与效果 10 类似,所有定义的组都必须具有一个名称。