效果技术语法 (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 是 SetVertexShaderSetGeometryShaderSetPixelShader (之一,它们类似于 API 方法 VSSetShaderGSSetShaderPSSetShader) 。

 

效果状态组在 效果状态中列出。

示例

此示例 (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 ) ) );
    }
}

效果格式