Bagikan melalui


Sintaks Teknik Efek (Direct3D 11)

Teknik efek dideklarasikan dengan sintaks yang dijelaskan di bagian ini.

TechniqueVersion TechniqueName [ <Anotasi> ]

{

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

}

Parameter

Item Deskripsi
TechniqueVersion
Baik teknik10 atau teknik11. Teknik yang menggunakan fungsionalitas baru untuk Direct3D 11 (shader 5_0, BindInterfaces, dll) harus menggunakan teknik11.
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 11).
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 [ID3D11DeviceContext::OMSetBlendState](/windows/desktop/api/D3D11/nf-d3d11-id3d11devicecontext-omsetblendstate) untuk daftar argumen.

Status stensil kedalaman
SetDepthStencilState( arguments ); 

Lihat ID3D11DeviceContext::OMSetDepthStencilState untuk daftar argumen.

Status Rasterizer
SetRasterizerState( arguments ); 

Lihat [ID3D11DeviceContext::RSSetState](/windows/desktop/api/D3D11/nf-d3d11-id3d11devicecontext-rssetstate) untuk daftar argumen.

Status Shader
SetXXXShader( Shader );

SetXXXShader adalah salah satu SetVertexShader, SetDomainShader, SetHullShader, SetGeometryShader, SetPixelShader atau SetComputeShader (yang mirip dengan metode API ID3D11DeviceContext::VSSetShader, ID3D11DeviceContext::D SSetShader, ID3D11DeviceContext::HSSetShader, ID3D11DeviceContext::GSSetShader, ID3D11DeviceContext::P SSetShader dan ID3D11DeviceContext::CSSetShader).

Shader adalah variabel shader, yang dapat diperoleh dengan banyak cara:

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 ) );
Status Target Render Salah satu:
SetRenderTargets( RTV0, DSV );
SetRenderTargets( RTV0, RTV1, DSV );
...
SetRenderTargets( RTV0, RTV1, RTV2, RTV3, RTV4, RTV5, RTV6, RTV7, DSV );

Mirip dengan ID3D11DeviceContext::OMSetRenderTargets.

Contoh

Contoh ini 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.

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

Format Efek

Sintaks Grup Efek (Direct3D 11)

Grup Status Efek