效果技术语法 (Direct3D 10)
使用以下语法声明效果技术。
technique10 技术名称 [ <注释> ]
{
- pass *PassName* \[ <*Annotations* > \] {
- \[ *SetStateGroup*; \] \[ *SetStateGroup*; \] ... \[ *SetStateGroup*; \]
}
参数
-
技术10
-
必需的关键字 (keyword) 。
-
技术名称
-
可选。 唯一标识效果技术名称的 ASCII 字符串。
-
注释
-
[in] 可选。 效果系统忽略的一个或多个用户提供的信息 (元数据) 。 有关语法,请参阅 注释语法 (Direct3D 10) 。
-
通过
-
必需的关键字 (keyword) 。
-
PassName
-
[in] 可选。 唯一标识传递名称的 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 );
SetXXXShader 是 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 ) ) );
}
}
相关主题