효과 기술 구문(Direct3D 10)

효과 기술은 다음 구문을 사용하여 선언됩니다.

technique10 TechniqueName [ <Annotations> ]

{

pass *PassName* \[ <*Annotations* > \] {
\[ *SetStateGroup*; \] \[ *SetStateGroup*; \] ... \[ *SetStateGroup*; \]
}

}

매개 변수

technique10

필수 키워드입니다.

TechniqueName

선택 사항입니다. 효과 기술의 이름을 고유하게 식별하는 ASCII 문자열입니다.

주석

[in] 선택적 항목으로, 효과 시스템에서 무시되는 하나 이상의 사용자 제공 정보(메타데이터)입니다. 구문은 주석 구문(Direct3D 10)을 참조하세요.

전달

필수 키워드입니다.

PassName

[in] 선택적 항목으로, 패스의 이름을 고유하게 식별하는 ASCII 문자열입니다.

SetStateGroup

[in] 다음과 같은 하나 이상의 상태 그룹을 설정합니다.

StateGroup Syntax
혼합 상태
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 ) ) );
    }
}

효과 형식