Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
Com as constantes, texturas e estado do sombreador declarados e inicializados, a única coisa que resta fazer é definir o estado de efeito no dispositivo.
Definir o estado não-sombreador no dispositivo
Alguns estados de pipeline não são definidos por um efeito. Por exemplo, limpar um destino de renderização prepara o destino de renderização para dados. Antes de definir o estado do efeito no dispositivo, aqui está um exemplo de limpeza de buffers de saída.
// 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 );
Definir estado de efeito no dispositivo
A definição do estado do efeito é feita aplicando o estado do efeito dentro do loop de renderização. Isso é feito de fora para dentro. Ou seja, selecione uma técnica e, em seguida, defina o estado para cada um dos passes (dependendo do resultado desejado).
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 );
}
}
Um efeito não renderiza nada, ele simplesmente define o estado do efeito para o dispositivo. O código de renderização é chamado após o estado do efeito atualizar o estado do dispositivo. Neste exemplo, a chamada DrawIndexed executa a renderização.
Tópicos relacionados