Tillämpa en teknik (Direct3D 10)

Med konstanterna, texturerna och skuggningstillståndet deklarerade och initierade är det enda som återstår att göra att ange effekttillståndet på enheten.

Ange icke-skuggningstillstånd på enheten

Vissa pipelinetillstånd anges inte av en effekt. Vid rensning av ett återgivningsmål görs återgivningsmålet redo att ta emot data. Här är ett exempel på hur du rensar utdatabuffertar innan du anger effekttillståndet på enheten.

    // Clear the render target and depth stencil
    float ClearColor[4] = { 0.0f, 0.25f, 0.25f, 0.55f };
    ID3D10RenderTargetView* pRTV = DXUTGetD3D10RenderTargetView();
    pd3dDevice->ClearRenderTargetView( pRTV, ClearColor );
    ID3D10DepthStencilView* pDSV = DXUTGetD3D10DepthStencilView();
    pd3dDevice->ClearDepthStencilView( pDSV, D3D10_CLEAR_DEPTH, 1.0, 0 );

Ange effekttillstånd i enheten

Du ställer in effekttillståndet genom att tillämpa effekttillståndet i återgivningsloopen. Detta görs utifrån in. Det vill säga välj en teknik och ange sedan tillståndet för vart och ett av passen (beroende på önskat resultat).

    D3D10_TECHNIQUE_DESC techDesc;
    pRenderTechnique->GetDesc( &techDesc );
    for( UINT p = 0; p < techDesc.Passes; ++p )
    {
        }
            ....
            pRenderTechnique->GetPassByIndex( p )->Apply(0);
            pd3dDevice->DrawIndexed( (UINT)pSubset->IndexCount, 0,  
                 (UINT)pSubset->VertexStart );
        }
    }

En effekt renderar ingenting, utan anger helt enkelt enhetens effekttillstånd. Återgivningskoden anropas efter att effekttillståndet uppdaterar enhetens tillstånd. I det här exemplet utför DrawIndexed-anropet återgivningen.

Återgivning av en effekt (Direct3D 10)