2012-11-13 35 views
5

Obecnie uczę się DirectX, dużo czytam o VertexBuffer. Ponieważ nie możesz uczyć się od programowania po prostu czytając, robię mały silnik z DX11 (Cóż, moje pytanie nie jest tak naprawdę zależne od wersji)DirectX - Jak działa VertexBuffer?

O ile rozumiem w VertexBuffer, przechowuję Vertices, a właściwie przechowuję to na karcie graficznej. Czytałem o dynamicznych i statycznych buforach. Więc jeśli rozumiem poprawnie, bufor statyczny jest inicjowany za pomocą wierzchołków, a inicjalizowane wierzchołki nie ulegają zmianie. OK, ale kiedy naprawdę tego potrzebuję. Chodzi mi o to, że w grze, czy cokolwiek, kiedy mam stałe wierzchołki? Może dla niektórych obiektów interfejsu użytkownika ...? - ale nawet one nie są stałe za każdym razem ... możesz przesunąć ich pozycję 2D ... itd.

Następna kwestia dotyczy dynamicznych buforów vertex, na przykład: Mam bufor z niektórymi wierzchołkami, te narysowane są wierzchołki. Następnie chcę dodać lub usunąć niektóre wierzchołki. Co teraz ... Więc po prostu "zaktualizowałem" bufor. Ale czy to naprawdę jest dobre i dobre dla wydajności? Wyobraź sobie edytor terenu. Tam musisz zaktualizować tony wierzchołków.

Odpowiedz

7

Mam na myśli w grze lub czymkolwiek, kiedy mam stałe wierzchołki?

Cały czas w rzeczywistości. Na przykład, geometria statyczna, wspomniane obiekty interfejsu użytkownika itp. Istnieje niewielkie nieporozumienie z twojej strony dotyczące poruszających się obiektów, stąd pomieszanie - nie poruszasz obiektami, zmieniając ich wierzchołki. Zamiast tego umieścisz swoje wierzchołki przez potoki cieniujące. W vertex shader możesz zastosować dowolne transformacje do swoich wierzchołków. Na przykład, jeśli masz drzewo, które zostało przeniesione z jakiegoś powodu z jakiegoś powodu (może to jest na pływającej wyspie lub czymś), zamiast zmieniać wierzchołki tworzące drzewo, zmieniasz transformację, która jest stosowana do wierzchołków .

Wyobraźmy sobie edytor terenu

To zależy od tego, co twój edytor terenu ma robić, ale na ogół nie są ponownie się zmieni wierzchołki tutaj. To znaczy. podczas edytowania wysokości, a następnie przesuwania wierzchołków w górę i w dół, zapisujesz na mapie wysokości (w większości przypadków tekstura w skali szarości) i ponownie obliczasz transformację na GPU w potoku cieniującym.