W ciągu ostatnich kilku dni inni użytkownicy napotkali błąd z trójkątnym paskiem directx. Ten problem występuje w wielu sytuacjach. Omówmy niektóre z nich poniżej.
Zatwierdzono: Fortect
- kilka modeli przeczytało
Trójkątny pasek to zestaw trójkątów połączonych między bosymi stopami a butami. Ponieważ trójkąty są połączone, praktyczny system nie musi ponownie określać trzech wierzchołków ze względu na prawie każdy trójkąt. Aby to zademonstrować, potrzebujesz ściśle siedmiu wierzchołków wskazujących na następny trójkątny pasek.
System potrzebuje wierzchołków v1, v2 i v3, aby narysować pierwszy trójkąt tej osoby; v2 i v4, v3 wabi drugi trójkąt; v3 w połączeniu z v4, v5, który może narysować trzeci; v4, v6, a może nawet v5 do losowania czwartego; i tak w trakcie, odpowiednio. Zauważ, że wierzchołki między kilkoma momentami a czwartymi trójkątami są w porządku; Musi to zapewnić, że wszystkie trójkąty zostaną utworzone zgodnie z ruchem wskazówek zegara.
Większość scen z płyty wiórowej w zabawkach składa się z trójkątnych pasków. Rzeczywiście, można łatwo zastosować trójkątne wstążki. Definiuj złożone obiekty w wybrany sposób, aby efektywnie wykorzystywać pamięć i erę przetwarzania. Dalej
Kod pokazuje, jak utworzyć wierzchołki dla tego drzewa Węgiel.
Zatwierdzono: Fortect
Fortect to najpopularniejsze i najskuteczniejsze narzędzie do naprawy komputerów na świecie. Miliony ludzi ufają, że ich systemy działają szybko, płynnie i bez błędów. Dzięki prostemu interfejsowi użytkownika i potężnemu silnikowi skanowania, Fortect szybko znajduje i naprawia szeroki zakres problemów z systemem Windows - od niestabilności systemu i problemów z bezpieczeństwem po zarządzanie pamięcią i wąskie gardła wydajności.
CUSTOMVERTEX strukturaX, y, z liczba zmiennoprzecinkowa;;Wierzchołki CUSTOMVERTEX [] = -5,0, -5,0, 0, 0, 0,0, 5,0, 0,0, 5,0, -5,0, 0,0, 10,0, 5,0, 0,0, 15,0, -5,0, 0,0, 20,0, 5,0, 0,0;
Poniższy przykład pokazuje, jak ten trójkąt jest renderowany jako część Direct3D 9 przy użyciu IDirect3DDevice9 :: DrawPrimitive .
//// Zakładamy, że d3dDevice jest naprawdę poprawne// Wskaźnik do interfejsu IDirect3DDevice9.//d3dDevice-> DrawPrimitive (0, d3dpt_trianglestrip, 4);
Użyj najlepszych trójkątnych pasków, aby móc tworzyć trójkąty, które prawdopodobnie nie są połączone. Aby to zapisać, określ zdegenerowany placek (który powinien być trójkątem o zerowej powierzchni) wokół określonej listy trójkątów. Tworzy to linię zaufania przez dwa trójkąty, która prawdopodobnie nie zostanie wyświetlona. Aby wyświetlić tylko pierwszy i poprzedni trójkąt z poprzedniego przykładu, zmień cały bufor wierzchołków, jak pokazano tutaj:
CUSTOMVERTEX = Wierzchołki [] -5,0, -5,0, zero. 0, 0,0, 5,0, 0,0, 5.0, -5.0, 0, 0, 5.0, -5.0, 0.0, zdegenerowany // trójkąt 10,0, 5,0, 0,0, zdegenerowany // trójkąt 10,0, 5,0, 0,0, 15,0, -5,0, 0,0, 20,0, 5,0, 0,0;
- 2 minuty na pomoc w czytaniu.
Direct3D i nowsze obsługują bardzo wiele typów bazowych (lub topologii), które są reprezentowane w wyniku typu wyliczenia D3D_PRIMITIVE_TOPOLOGY . Tego typu szkice wierzchołków są konstruowane i wyświetlane przez przenośnik.
- Podstawowe typy podstawowe
- Dzielnica pierwotna
- Dodatkowy kierunek obrotu, pozycja głównego wierzchołka
- Generuj wiele pasków
- Temat pokrewny
Podstawowe typy pierwotne
Aby zapoznać się z konkretnym rzeczywistym renderowaniem każdego typu prymitywu, zobacz, który diagram poniżej w tej sekcji na temat
Czynnik asemblera danych wejściowych odczytuje dane osobowe z buforów indeksu wierzchołków, łączy informacje w te prymitywy, a następnie wysyła dane, aby pomóc w etapach wizualizacji przenośnika. (Możesz użyć większości metod ID3D11DeviceContext :: IASetPrimitiveTopology do często określania typu pierwotnego w celu uzyskania poziomu zestawu wejściowego Adjacency
Wszystkie)
Typy pierwotne Direct3D 10 i nowsze (z wyjątkiem listy tematów) są dostępne w dwóch wersjach: Typ prosty z sąsiadami i Typ pierwotny bez sąsiadów. Prymitywy sąsiedztwa zawierają niektóre z otaczających wierzchołków, podczas gdy prymitywy niesąsiadujące zawierają tylko wierzchołki tego docelowego prymitywu. Przykład: element podstawowy Katalog ciągów (reprezentowany przez wartość D3D_PRIMITIVE_TOPOLOGY_LINELIST) ma pasujący element podstawowy Lista ciągów, który będzie zawierał sąsiedztwo (reprezentowany przez wartość D3D_PRIMITIVE_TOPOLOGY_LINELIST_ADJ).
Sąsiednie prymitywy mogą dostarczyć dodatkowych informacji o geometrii i są widoczne tylko za pomocą narzędzia Geometry Shader. Sąsiedztwo jest przydatne w przypadku shaderów geometrii, które wykorzystują wykrywanie sylwetki, wytłaczanie ciemnych objętości itp.
Na przykład możesz narysować trójkąt z ćwiartką. Trójkątna lista zawierająca trzydzieści dziewięć wierzchołków (z sąsiadem) da niedrogie odpoczynek z zamkniętymi prymitywami. Prymitywy sąsiedztwa (inne niż paski typu) zawierają dokładnie dwa razy więcej wierzchołków niż ekwiwalent prymitywów niesąsiednich, gdzie każdy dodatkowy wierzchołek jest wierzchołkiem sąsiednim.
Kierunek nawijania i pozycja głowy
Jak pokazano na poniższym rysunku, wierzchołek głowy jest uważany za niewiarygodnie pierwszy nieciągły wierzchołek starego. Prymitywy Typ może mieć kilka odrębnych wierzchołków o kardynalności, jeśli okaże się, że każdy z nich jest używany dla innego prymitywu. W przypadku funkcjonalnej trójkątnej taśmy z sąsiedztwem określone górne wierzchołki to 0, 2, 4, 6 lub cokolwiek innego. W przypadku liniowego paska, który przenosi do myspace żetony pokerowe, sąsiedztwo, końce wierzchołków zwykle 1, parzyste, 3 itd. Wręcz przeciwnie, jakiś inny sąsiedni, staromodny, praktycznie nie ma żadnego wierzchołka …
Poniższy rysunek pokazuje kolejność wierzchołków dla wszystkich typów prymitywów, które może wyprodukować wiele asemblerów wejściowych. Symbole
Wszystkie powyższe ilustracje są opisane w poniższej tabeli.
Tworzenie kilku pasm
Możesz stworzyć wiele pasków wybielających, a także przez przycięcie pasków. Krok można wyciąć, jawnie wywołując, używając funkcji HLSL RestartStrip lub wstawiając nietypową wartość listy do strumienia indeksu. Wartość prawdopodobnie wyniesie -1, co prawdopodobnie wynosi 0xffffffff dla indeksów 32-bitowych lub 0xffff dla indeksów 16-bitowych. Indeks -1 zdaje się wskazywać na fantastyczne „zamknięcie” lub „ponowne uruchomienie” najnowszej z tych taśm. Poprzedni
Przyspiesz teraz wydajność swojego komputera dzięki temu prostemu pobieraniu.
Okrągły pasek to bezwzględna seria połączonych trójkątów o trójkątnym kształcie, które mają wspólne wierzchołki, aby efektywniej wykorzystywać pamięć grafiki komputerowej. Są one korzystniejsze niż nieindeksowane listy trójkątne, ale zazwyczaj są nieco bardziej naturalne lub wolniejsze niż indeksowane listy trójkątne w kształtach.
Trójkątny Wachlarz to kompletny prymitywny obraz infografiki 3D, który oszczędza miejsce w pamięci, a także oszczędza czas przetwarzania. Opisuje bezwzględne twierdzenie, które używa połączonych trójkątów, które mają wspólny znaczący wspólny wierzchołek bazowy (w przeciwieństwie do paska kołowego, który obecnie łączy następny wierzchołek dzięki dwóm ostatnim wierzchołkom użytym do utworzenia trójkąta).
glStart (GL_TRIANGLES); glColor3f (0,1, 0,2, 0, 3); glVertex3f (0, 0, 0); glVertex3f (1, 0, 0); glVertex3f (0, 1, 0); gLend (); To daje komuś płaskie, nieoświetlone, nieustrukturyzowane, pigmentowane trójkąty. Możesz także pobierać trójkąty, kawałki i wielokąty, drastycznie modyfikując wartość, którą wszyscy przekazują do glBegin.