Синтаксис группы эффектов (Direct3D 11)

Группа эффектов объявляется с помощью синтаксиса, описанного в этом разделе.

fxgroup GroupName  [ <Annotations > ]
{
    TechniqueVersion TechniqueName [ <Annotations > ] 
    { 
       ...
    } 
    TechniqueVersion TechniqueName [ <Annotations > ] 
    { 
       ...
    } 
}



Параметры

Элемент Описание
fxgroup
равнозначные ключевое слово.
Groupname
Обязательный. Строка ASCII, однозначно идентифицирующая имя группы эффектов. В отличие от методов, группы должны иметь имена, чтобы гарантировать, что методы имеют уникальный идентификатор (см. раздел Группы и методы ниже).
< Аннотации >
[в] Необязательно. Один или несколько фрагментов предоставленных пользователем сведений (метаданных), которые игнорируются системой эффектов. Синтаксис см. в разделе Синтаксис заметки (Direct3D 11).
TechniqueVersion
Либо "technique10", либо "technique11". Методы, использующие функции, новые для Direct3D 11 (шейдеры 5_0, BindInterfaces и т. д.), должны использовать "technique11".
Имя метода
Необязательный элемент. Строка 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 работает аналогично effects 10, все определенные группы должны иметь имена.

Формат эффекта

Синтаксис метода эффектов (Direct3D 11)