Udostępnij za pośrednictwem


wierzchołków (Direct3D 9)

wierzchołków reprezentowane przez interfejs IDirect3DVertexBuffer9 to pamięci zawierające dane wierzchołka. wierzchołków mogą zawierać dowolny typ wierzchołka — przekształcony lub nieprzetworzony, oświetlony lub nielitowy — które mogą być renderowane za pomocą metod renderowania w interfejsie IDirect3DDevice 9. Wierzchołki można przetwarzać w buforze wierzchołka, aby wykonywać operacje, takie jak transformacja, oświetlenie lub generowanie flag wycinków. Transformacja jest zawsze wykonywana.

Elastyczność wierzchołków czyni je idealnymi punktami przejściowymi do ponownego wykorzystania przekształconej geometrii. Można utworzyć jeden bufor wierzchołka, przekształcić, jasny i przyciągnąć w nim wierzchołki oraz renderować model w scenie tyle razy, ile to konieczne bez ponownego przekształcania, nawet w przypadku przeplatania zmian stanu renderowania. Jest to przydatne podczas renderowania modeli korzystających z wielu tekstur: geometria jest przekształcana tylko raz, a następnie części mogą być renderowane zgodnie z potrzebami, przeplatane z wymaganymi zmianami tekstury. Zmiany stanu renderowania wprowadzone po przetworzeniu wierzchołków zaczynają obowiązywać przy następnym przetwarzaniu wierzchołków.

Opis

Bufor wierzchołka jest opisany pod względem jego możliwości: jeśli może istnieć tylko w pamięci systemowej, jeśli jest używany tylko do operacji zapisu, oraz typ i liczba wierzchołków, które może zawierać. Wszystkie te cechy są przechowywane w strukturze D3DVERTEXBUFFER_DESC.

Element członkowski Formatu jest ustawiony na D3DFMT_VERTEXDATA, aby wskazać, że jest to bufor wierzchołka. Typ identyfikuje typ zasobu buforu wierzchołka. Element członkowski struktury Użycia zawiera ogólne flagi możliwości. Flaga D3DUSAGE_SOFTWAREPROCESSING wskazuje, że bufor wierzchołka ma być używany z przetwarzaniem wierzchołków oprogramowania. Obecność flagi D3DUSAGE_WRITEONLY w obszarze Użycie wskazuje, że pamięć buforu wierzchołka jest używana tylko do operacji zapisu. Dzięki temu sterownik może umieścić dane wierzchołka w najlepszej lokalizacji pamięci, aby umożliwić szybkie przetwarzanie i renderowanie. Jeśli flaga D3DUSAGE_WRITEONLY nie jest używana, sterownik jest mniej prawdopodobne, aby umieścić dane w lokalizacji, która jest nieefektywna dla operacji odczytu. To poświęca pewną szybkość przetwarzania i renderowania. Jeśli ta flaga nie jest określona, zakłada się, że aplikacje wykonują operacje odczytu i zapisu na danych w buforze wierzchołka.

Pula określa klasę pamięci przydzieloną dla buforu wierzchołka. Flaga D3DPOOL_SYSTEMMEM wskazuje, że system utworzył bufor wierzchołka w pamięci systemowej.

Element członkowski Rozmiar przechowuje rozmiar w bajtach danych buforu wierzchołka. Element członkowski FVF zawiera kombinację D3DFVF, które identyfikują typ wierzchołków, które zawiera bufor.

Pula pamięci i użycie

wierzchołków można tworzyć za pomocą metody IDirect3DDevice9::CreateVertexBuffer, która przyjmuje parametry puli (klasy pamięci) i użycia. IDirect3DDevice9::CreateVertexBuffer można również utworzyć przy użyciu określonego kodu FVF do użycia w przetwarzaniu wierzchołków funkcji stałych lub jako danych wyjściowych wierzchołków procesu. Aby uzyskać szczegółowe informacje, zobacz wierzchołków FVF (Direct3D 9).

Flaga D3DUSAGE_SOFTWAREPROCESSING można ustawić, gdy dla tego urządzenia jest włączone przetwarzanie wierzchołków mieszanych lub programowych (D3DCREATE_MIXED_VERTEXPROCESSING/D3DCREATE_SOFTWARE_VERTEXPROCESSING). D3DUSAGE_SOFTWAREPROCESSING należy ustawić, aby były używane z przetwarzaniem wierzchołków oprogramowania w trybie mieszanym, ale nie należy go ustawiać w celu uzyskania najlepszej możliwej wydajności podczas korzystania z przetwarzania wierzchołków sprzętowych w trybie mieszanym. (D3DCREATE_HARDWARE_VERTEXPROCESSING). Jednak ustawienie D3DUSAGE_SOFTWAREPROCESSING jest jedyną opcją, gdy pojedynczy bufor ma być używany zarówno z przetwarzaniem wierzchołków sprzętowych, jak i programowych. D3DUSAGE_SOFTWAREPROCESSING jest dozwolone w przypadku urządzeń mieszanych, a także dla urządzeń z oprogramowaniem.

Istnieje możliwość wymuszenia wierzchołków i indeksów do pamięci systemowej przez określenie D3DPOOL_SYSTEMMEM, nawet gdy przetwarzanie wierzchołków odbywa się na sprzęcie. Jest to sposób, aby uniknąć nadmiernie dużych ilości pamięci zablokowanej przez stronę, gdy sterownik umieszcza te w pamięci protokołu AGP.

W tej sekcji przedstawiono pojęcia niezbędne do zrozumienia i używania wierzchołków w aplikacji Direct3D. Informacje są podzielone na następujące sekcje.

zasobów Direct3D

renderowanie z wierzchołków i indeksów (Direct3D 9)

indeksów (Direct3D 9)