다음을 통해 공유


효과 기술 구문(Direct3D 11)

효과 기술은 이 섹션에 설명된 구문을 사용하여 선언됩니다.

TechniqueVersion TechniqueName [ <Annotations> ]

{

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

}

매개 변수

항목 설명
TechniqueVersion
technique10 또는 technique11. Direct3D 11(5_0 셰이더, BindInterfaces 등)에 새로운 기능을 사용하는 기술은 technique11을 사용해야 합니다.
TechniqueName
선택 사항입니다. 효과 기술의 이름을 고유하게 식별하는 ASCII 문자열입니다.
< 주석 >
[in] 선택적 항목으로, 효과 시스템에서 무시되는 하나 이상의 사용자 제공 정보(메타데이터)입니다. 구문은 주석 구문(Direct3D 11)을 참조하세요.
전달
필수 키워드입니다.
PassName
[in] 선택적 항목으로, 패스의 이름을 고유하게 식별하는 ASCII 문자열입니다.
SetStateGroup
[in] 다음과 같은 하나 이상의 상태 그룹을 설정합니다.
StateGroup Syntax
혼합 상태
SetBlendState( arguments ); 

인수 목록은 [ID3D11DeviceContext::OMSetBlendState](/windows/desktop/api/D3D11/nf-d3d11-id3d11devicecontext-omsetblendstate)를 참조하세요.

깊이 스텐실 상태
SetDepthStencilState( arguments ); 

인수 목록은 ID3D11DeviceContext::OMSetDepthStencilState 를 참조하세요.

래스터라이저 상태
SetRasterizerState( arguments ); 

인수 목록은 [ID3D11DeviceContext::RSSetState](/windows/desktop/api/D3D11/nf-d3d11-id3d11devicecontext-rssetstate)를 참조하세요.

셰이더 상태
SetXXXShader( Shader );

SetXXXShader는 SetVertexShader, SetDomainShader, SetHullShader, SetGeometryShader, SetPixelShader 또는 SetComputeShader 중 하나입니다(API 메서드 ID3D11DeviceContext::VSSetShader와 유사) ID3D11DeviceContext::D SSetShader, ID3D11DeviceContext::HSSetShader, ID3D11DeviceContext::GSSetShader, ID3D11DeviceContext::P SSetShaderID3D11DeviceContext::CSSetShader).

셰이더는 여러 가지 방법으로 얻을 수 있는 셰이더 변수입니다.

SetXXXShader( CompileShader( shader_profile, ShaderFunction( args ) ) );
SetXXXShader( CompileShader( NULL ) );
SetXXXShader( NULL );
SetXXXShader( myShaderVar );
SetXXXShader( myShaderArray[2] );
SetXXXShader( myShaderArray[uIndex] );
SetGeometryShader( ConstructGSWithSO( Shader, strStream0 ) );
SetGeometryShader( ConstructGSWithSO( Shader, strStream0, strStream1, strStream2, strStream3, RastStream ) );
렌더링 대상 상태 다음 중 하나:
SetRenderTargets( RTV0, DSV );
SetRenderTargets( RTV0, RTV1, DSV );
...
SetRenderTargets( RTV0, RTV1, RTV2, RTV3, RTV4, RTV5, RTV6, RTV7, DSV );

ID3D11DeviceContext::OMSetRenderTargets와 유사합니다.

예제

다음은 혼합 상태를 설정하는 예제입니다.

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 );
    }
}

다음은 셰이더 상태를 설정하는 예제입니다.

technique10 RenderSceneWithTexture1Light
{
    pass P0
    {
        SetVertexShader( CompileShader( vs_4_0, RenderSceneVS( 1, true, true ) ) );
        SetGeometryShader( NULL );
        SetPixelShader( CompileShader( ps_4_0, RenderScenePS( true ) ) );
    }
}

효과 형식

효과 그룹 구문(Direct3D 11)

효과 상태 그룹