Синтаксис метода эффектов (Direct3D 10)
Метод эффекта объявляется с помощью следующего синтаксиса.
technique10 TechniqueName [ <Аннотации> ]
{
- pass *PassName* \[ <*Annotations* > \] {
- \[ *SetStateGroup*; \] \[ *SetStateGroup*; \] ... \[ *SetStateGroup*; \]
}
Параметры
-
technique10
-
Обязательный ключевое слово.
-
Имя метода
-
Необязательный элемент. Строка ASCII, однозначно идентифицирующая имя метода эффекта.
-
Аннотации
-
[в] Необязательно. Один или несколько фрагментов предоставленных пользователем сведений (метаданных), которые игнорируются системой эффектов. Синтаксис см. в разделе Синтаксис заметки (Direct3D 10).
-
Пройти
-
Обязательный ключевое слово.
-
PassName
-
[в] Необязательно. Строка ASCII, однозначно идентифицирующая имя прохода.
-
SetStateGroup
-
[in] Задайте одну или несколько групп состояний, например:
StateGroup Синтаксис Состояние смешения SetBlendState( arguments );
Список аргументов см. в разделе [OMSetBlendState](/windows/desktop/api/D3D10/nf-d3d10-id3d10device-omsetblendstate).
Состояние трафарета глубины SetDepthStencilState( arguments );
Список аргументов см. в разделе OMSetDepthStencilState .
Состояние средства прорисовки SetRasterizerState( arguments );
Список аргументов см. в разделе [RSSetState](/windows/desktop/api/D3D10/nf-d3d10-id3d10device-rssetstate).
Состояние шейдера SetXXXShader( CompileShader( shader_profile, ShaderFunction( args ) ) );
или
SetXXXShader( CompileShader( NULL ) );
или
SetXXXShader( NULL );
SetXXXXShader — это один из методов SetVertexShader, SetGeometryShader или SetPixelShader (которые аналогичны методам API VSSetShader, GSSetShader и PSSetShader).
Группы состояний эффектов перечислены в состоянии эффекта.
Примеры
Этот пример (из примера CubeMapGS) задает состояние наложения.
BlendState NoBlend
{
BlendEnable[0] = False;
};
...
technique10
{
pass p2
{
...
SetBlendState( NoBlend, float4( 0.0f, 0.0f, 0.0f, 0.0f ), 0xFFFFFFFF );
}
}
В этом примере настраивается состояние растеризатора для отрисовки объекта в каркасе.
RasterizerState rsWireframe { FillMode = WireFrame; };
...
technique10
{
pass p1
{
....
SetRasterizerState( rsWireframe );
}
}
В этом примере задается состояние шейдера (из примера BasicHLSL10); который использует вершинный шейдер и шейдер пикселей.
technique10 RenderSceneWithTexture1Light
{
pass P0
{
SetVertexShader( CompileShader( vs_4_0, RenderSceneVS( 1, true, true ) ) );
SetGeometryShader( NULL );
SetPixelShader( CompileShader( ps_4_0, RenderScenePS( true ) ) );
}
}
Связанные темы