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.
Renderowanie wieloprzebiegowe to proces, w którym aplikacja kilkakrotnie przechodzi przez graf sceny, aby wygenerować wynikowy obraz do wyświetlenia. Renderowanie wielokrotne zwiększa wydajność, ponieważ dzieli złożone sceny na zadania, które mogą być wykonywane współbieżnie.
Aby wykonać renderowanie wielokrotnego przekazywania, należy utworzyć kontekst odroczony i listę poleceń dla każdego dodatkowego przekazania. Podczas gdy aplikacja przechodzi przez graf sceny, rejestruje polecenia (na przykład polecenia renderowania, takie jak Draw) w kontekście odroczonym. Po zakończeniu przechodzenia aplikacja wywołuje metodę FinishCommandList w kontekście odroczonym. Na koniec aplikacja wywołuje metodę ExecuteCommandList w kontekście bezpośrednim, aby wykonać polecenia w każdej liście poleceń.
Poniższy pseudokod pokazuje, jak wykonać renderowanie wielokrotnego przejścia.
{
ImmCtx->SetRenderTarget( pRTViewOfResourceX );
DefCtx1->SetTexture( pSRView1OfResourceX );
DefCtx2->SetTexture( pSRView2OfResourceX );
for () // Traverse the scene graph.
{
ImmCtx->Draw(); // Pass 0: immediate context renders primitives into resource X.
// The following texturing by the deferred contexts occurs after the
// immediate context makes calls to ExecuteCommandList.
// Resource X is then completely updated by the immediate context.
DefCtx1->Draw(); // Pass 1: deferred context 1 performs texturing from resource X.
DefCtx2->Draw(); // Pass 2: deferred context 2 performs texturing from resource X.
}
// Create command lists and record commands into them.
DefCtx1->FinishCommandList( &pCL1 );
DefCtx2->FinishCommandList( &pCL2 );
ImmCtx->ExecuteCommandList( pCL1 ); // Execute pass 1.
ImmCtx->ExecuteCommandList( pCL2 ); // Execute pass 2.
}
Notatka
Kontekst bezpośredni modyfikuje zasób, który jest powiązany z bezpośrednim kontekstem jako widok docelowy renderowania (RTV); natomiast każdy kontekst odroczony po prostu używa zasobu, który jest powiązany z kontekstem odroczonym jako widok zasobu cieniowania (SRV). Aby uzyskać więcej informacji na temat kontekstów natychmiastowego i odroczonego renderowania, zobacz natychmiastowe i odroczone renderowanie.
Tematy pokrewne