效果组语法 (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 类似,所有定义的组都必须具有一个名称。

效果格式

效果技术语法 (Direct3D 11)