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.
W wersji Direct3D 10 stan urządzenia jest pogrupowany w obiekty stanu, co znacznie zmniejsza koszt zmian stanu. Istnieje kilka obiektów stanu, a każdy z nich jest przeznaczony do inicjowania zestawu stanu dla określonego etapu potoku. Można utworzyć maksymalnie 4096 każdego typu obiektu stanu.
- stanuInput-Layout
- stanu rasteryzatora
- stanuDepth-Stencil
- stanu blend
- stanu próbkatora
- zagadnienia dotyczące wydajności
- Tematy pokrewne
stan Input-Layout
Ta grupa stanu (zobacz D3D10_INPUT_ELEMENT_DESC) określa, w jaki sposób etap asemblera wejściowego odczytuje dane z wejściowych i tworzy je do użycia przez cieniowanie wierzchołków. Obejmuje to stan, taki jak liczba elementów w buforze wejściowym i podpis danych wejściowych. Etap asemblera wejściowego to nowy etap w potoku, którego zadaniem jest przesyłanie strumienia elementów pierwotnych z pamięci do potoku.
Aby utworzyć obiekt typu input-layout-state, zobacz CreateInputLayout.
Stan rasteryzatora
Ta grupa stanu (zobacz D3D10_RASTERIZER_DESC) inicjuje etap rasteryzatora . Ten obiekt zawiera stan, taki jak tryby wypełnienia lub ulotu, włączenie prostokąta nożycowego do wycinków i ustawienie parametrów wieloprzykładowych. Ten etap rasteryzuje pierwotnych w pikselach, wykonując operacje, takie jak wycinanie i mapowanie elementów pierwotnych do widoku.
Aby utworzyć obiekt stanu rasteryzatora, zobacz CreateRasterizerState.
stan Depth-Stencil
Ta grupa stanu (patrz D3D10_DEPTH_STENCIL_DESC) inicjuje część wzornika głębi etapu fuzji danych wyjściowych. W szczególności ten obiekt inicjuje głębokość i testowanie wzornika.
Aby utworzyć obiekt typu depth-stencil-state, zobacz CreateDepthStencilState.
Stan mieszanki
Ta grupa stanu (zobacz D3D10_BLEND_DESC) inicjuje część mieszaną etapu fuzji danych wyjściowych.
Aby utworzyć obiekt blend-state, zobacz CreateBlendState.
Stan próbkatora
Ta grupa stanu (zobacz D3D10_SAMPLER_DESC) inicjuje obiekt sampler. Obiekt sampler jest używany przez etapy cieniowania do filtrowania tekstur w pamięci.
Różnice między direct3D 9 i Direct3D 10:
- W trybie Direct3D 10 obiekt próbkatora nie jest już powiązany z określoną teksturą. Opisuje on tylko sposób filtrowania przy użyciu dowolnego dołączonego zasobu.
Aby utworzyć obiekt sampler-state, zobacz CreateSamplerState.
Zagadnienia dotyczące wydajności
Projektowanie interfejsu API w celu używania obiektów stanu powoduje utworzenie kilku zalet wydajności. Obejmują one weryfikowanie stanu w czasie tworzenia obiektu, włączanie buforowania obiektów stanu w sprzęcie i znacznie zmniejszenie ilości stanu przekazywanego podczas wywołania interfejsu API ustawień stanu (przez przekazanie uchwytu do obiektu stanu zamiast stanu).
Aby osiągnąć te ulepszenia wydajności, należy utworzyć obiekty stanu podczas uruchamiania aplikacji, a także przed pętlą renderowania. Obiekty stanu są niezmienne, czyli po ich utworzeniu nie można ich zmienić. Zamiast tego należy je zniszczyć i odtworzyć. Aby poradzić sobie z tym ograniczeniem, można utworzyć maksymalnie 4096 każdego typu obiektów stanu. Można na przykład utworzyć kilka obiektów sampler z różnymi kombinacjami stanu próbkatora. Zmiana stanu próbkatora jest następnie realizowana przez wywołanie odpowiedniego interfejsu API zestawu, który przekazuje uchwyt do obiektu (w przeciwieństwie do stanu próbkatora). Znacznie zmniejsza to obciążenie podczas każdej ramki renderowania w celu zmiany stanu, ponieważ liczba wywołań i ilość danych jest znacznie zmniejszona.
Alternatywnie możesz użyć systemu efektu, który automatycznie będzie zarządzać wydajnym tworzeniem i niszczeniem obiektów stanu dla aplikacji.
Tematy pokrewne
-
funkcje interfejsu API (Direct3D 10)