Notatka
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
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.
Note
W tym artykule użyto interfejsów i obiektów stanu Direct3D 11. Aby zapoznać się z implementacją direct3D 10, zobacz Stosowanie techniki (Direct3D 10).
Ustawianie stanu niezwiązanego ze shaderem w urządzeniu
Pewien stan potoku nie jest ustawiany przez efekt. Na przykład wyczyszczenie elementu docelowego renderowania przygotowuje element docelowy renderowania dla danych. Przed ustawieniem stanu efektu na urządzeniu poniżej przedstawiono 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 };
ID3D11RenderTargetView* pRTV = DXUTGetD3D11RenderTargetView();
pD3DDevice->ClearRenderTargetView( pRTV, ClearColor );
ID3D11DepthStencilView* pDSV = DXUTGetD3D11DepthStencilView();
pD3DDevice->ClearDepthStencilView( pDSV, D3D11_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 z 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).
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 );
}
}
Efekt niczego nie renderuje, jedynie ustawia stan efektu w urządzeniu. Kod renderujący jest wywoływany po tym, jak stan efektu zaktualizuje stan urządzenia. W tym przykładzie wywołanie DrawIndexed odpowiada za renderowanie.
Tematy pokrewne