Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Przy zadeklarowaniu i zainicjowaniu stałych, tekstur i stanu cieniowania jedyną rzeczą, którą należy wykonać, jest ustawienie stanu efektu na urządzeniu.
Ustaw stan niezwiązany z shaderami w urządzeniu
Niektóre stany potoku nie są ustawiane przez efekt. Na przykład wyczyszczenie elementu docelowego renderowania przygotowuje element docelowy renderowania dla danych. Przed ustawieniem stanu efektu w urządzeniu, oto przykład czyszczenia buforów wyjściowych.
// 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 );
Ustawianie stanu efektu na urządzeniu
Ustawianie stanu efektu odbywa się przez zastosowanie stanu efektu w pętli renderowania. Odbywa się to od zewnątrz do wewnątrz. Oznacza to, że wybierz technikę, a następnie ustaw stan dla każdego z przebiegów (w zależności od żądanego wyniku).
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 );
}
}
Efekt nie generuje niczego, po prostu ustawia stan efektu na urządzeniu. Kod renderowania jest wywoływany po tym, jak stan efektu zaktualizuje stan urządzenia. W tym przykładzie wywołanie DrawIndexed wykonuje renderowanie.
Tematy pokrewne