Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Avec les constantes, les textures et l’état du nuanceur déclarés et initialisés, la seule chose à faire est de définir l’état d’effet dans l’appareil.
Remarque
Cet article utilise des interfaces et des objets d’état Direct3D 11. Pour l’implémentation de Direct3D 10, consultez Appliquer une technique (Direct3D 10).
Définir l’état sans shader sur le périphérique
L’état du pipeline n’est pas défini par un effet. Par exemple, l’effacement d’une cible de rendu prépare la cible de rendu à recevoir des données. Avant de définir l’état d’effet dans l’appareil, voici un exemple de suppression des mémoires tampons de sortie.
// Clear the render target and depth stencil
float ClearColor[4] = { 0.0f, 0.25f, 0.25f, 0.55f };
ID3D11RenderTargetView* pRTV = DXUTGetD3D11RenderTargetView();
pD3DDevice->ClearRenderTargetView( pRTV, ClearColor );
ID3D11DepthStencilView* pDSV = DXUTGetD3D11DepthStencilView();
pD3DDevice->ClearDepthStencilView( pDSV, D3D11_CLEAR_DEPTH, 1.0, 0 );
Définir l’état de l’effet dans l’appareil
La définition de l’état d’effet est effectuée en appliquant l’état d’effet dans la boucle de rendu. Cela se fait de l’extérieur vers l’intérieur. Autrement dit, sélectionnez une technique, puis définissez l’état de chacune des passes (en fonction du résultat souhaité).
D3D11_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 );
}
}
Un effet n’affiche rien, il définit simplement l’état de l’effet sur l’appareil. Le code de rendu est appelé après que l’état de l’effet a mis à jour l’état du périphérique. Dans cet exemple, l’appel DrawIndexed effectue le rendu.
Rubriques connexes