Aplicar una técnica (Direct3D 10)
Con las constantes, texturas y el estado del sombreador declarados e inicializados, lo único que queda por hacer es establecer el estado de efecto en el dispositivo.
Establecer el estado no sombreador en el dispositivo
Un efecto no establece algún estado de canalización. Por ejemplo, al borrar un destino de representación, se prepara el destino de representación para los datos. Antes de establecer el estado de efecto en el dispositivo, este es un ejemplo de borrado de búferes de salida.
// 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 );
Establecer el estado del efecto en el dispositivo
El estado de establecimiento del efecto se realiza aplicando el estado de efecto dentro del bucle de representación. Esto se hace desde el exterior en. Es decir, seleccione una técnica y establezca el estado de cada uno de los pases (según el resultado deseado).
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 );
}
}
Un efecto no representa nada, simplemente establece el estado del efecto en el dispositivo. Se llama al código de representación después de que el estado del efecto actualice el estado del dispositivo. En este ejemplo, la llamada DrawIndexed realiza la representación.
Temas relacionados