Bagikan melalui


Sintaks Teknik Efek (Direct3D 10)

Teknik efek dideklarasikan dengan sintaks berikut.

technique10 TechniqueName [ <Anotasi> ]

{

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

}

Parameter

teknik10

Kata kunci yang diperlukan.

Nama Teknik

Pilihan. String ASCII yang secara unik mengidentifikasi nama teknik efek.

Anotasi

[in] Opsional. Satu atau beberapa bagian informasi yang disediakan pengguna (metadata) yang diabaikan oleh sistem efek. Untuk sintaks, lihat Sintaks Anotasi (Direct3D 10).

Lulus

Kata kunci yang diperlukan.

PassName

[in] Opsional. String ASCII yang secara unik mengidentifikasi nama pass.

SetStateGroup

[in] Atur satu atau beberapa grup status seperti:

StateGroup Sintaks
Status Campuran
SetBlendState( arguments ); 

Lihat [OMSetBlendState](/windows/desktop/api/D3D10/nf-d3d10-id3d10device-omsetblendstate) untuk daftar argumen.

Status stensil kedalaman
SetDepthStencilState( arguments ); 

Lihat OMSetDepthStencilState untuk daftar argumen.

Status Rasterizer
SetRasterizerState( arguments ); 

Lihat [RSSetState](/windows/desktop/api/D3D10/nf-d3d10-id3d10device-rssetstate) untuk daftar argumen.

Status Shader
SetXXXShader( CompileShader( shader_profile, ShaderFunction( args ) ) );

atau

SetXXXShader( CompileShader( NULL ) );

atau

SetXXXShader( NULL );

SetXXXShader adalah salah satu SetVertexShader, SetGeometryShader, atau SetPixelShader (yang mirip dengan metode API VSSetShader, GSSetShader, dan PSSetShader).

 

Grup status efek tercantum dalam status efek.

Contoh

Contoh ini (dari sampel CubeMapGS) menetapkan status blending.

BlendState NoBlend
{ 
    BlendEnable[0] = False;
};

...

technique10
{
    pass p2 
    {
        ...
        SetBlendState( NoBlend, float4( 0.0f, 0.0f, 0.0f, 0.0f ), 0xFFFFFFFF );
    }
}

Contoh ini menyiapkan status rasterizer untuk merender objek dalam wireframe.

RasterizerState rsWireframe { FillMode = WireFrame; };

...

technique10
{
    pass p1 
    {
        ....
        SetRasterizerState( rsWireframe );
    }
}

Contoh ini menetapkan status shader (dari sampel BasicHLSL10); yang menggunakan vertex dan pixel shader.

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

Format Efek