Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Direct3D 10 a vyšší podporuje několik primitivních typů (nebo topologií), které jsou reprezentovány D3D_PRIMITIVE_TOPOLOGY výčtem typu. Tyto typy definují, jak se vrcholy interpretují a vykreslují kanálem.
- základní primitivní typy
- primitivní sousedství
- směr vinutí a pozice úvodního vrcholu
- generování více pruhů
- související témata
Základní primitivní typy
Podporují se následující základní primitivní typy:
- seznamu bodů
- seznamu řádků
- čáry
- trojúhelníku
- Trojúhelníkový pruh
Vizualizaci každého primitivního typu najdete v diagramu dále v tomto tématu v části Směr vinutí a pozice vrcholů.
Fáze vstupního assembleru čte data z vyrovnávací paměti vrcholu a indexu, sestaví data do těchto primitiv a pak odešle data do zbývajících fází kanálu. (Metodu ID3D11DeviceContext::IASetPrimitiveTop ology můžete použít k určení primitivního typu pro fázi input-assembleru.)
Primitivní sousedství
Všechny primitivní typy Direct3D 10 a vyšší (s výjimkou seznamu bodů) jsou k dispozici ve dvou verzích: jeden primitivní typ s sousedstvím a jedním primitivním typem bez sousedství. Primitiva s sousedstvím obsahují některé okolní vrcholy, zatímco primitiva bez sousedství obsahují pouze vrcholy cílového primitiva. Například primitiva seznamu řádků (reprezentovaná hodnotou D3D_PRIMITIVE_TOPOLOGY_LINELIST) má odpovídající primitiva seznamu řádků, který zahrnuje sousedství (reprezentované hodnotou D3D_PRIMITIVE_TOPOLOGY_LINELIST_ADJ.)
Sousední primitiva jsou určena k poskytnutí dalších informací o geometrii a jsou viditelné pouze prostřednictvím shaderu geometrie. Sousedství je užitečné pro geometrické shadery, které používají detekci siluety, vytlačování stínového svazku atd.
Předpokládejme například, že chcete nakreslit seznam trojúhelníků s sousedstvím. Trojúhelníkový seznam obsahující 36 vrcholů (s sousedstvím) vrátí 6 dokončených primitiv. Primitiva s sousedstvím (s výjimkou pruhů čar) obsahují přesně dvakrát tolik vrcholů jako ekvivalentní primitivní bez sousedství, kde každý další vrchol je sousední vrchol.
Směr vinutí a přední pozice vrcholu
Jak je znázorněno na následujícím obrázku, přední vrchol je prvním nesouvislým vrcholem v primitivu. Primitivní typ může mít definovaných více počátečních vrcholů, pokud se každý z nich používá pro jiné primitivy. Pro trojúhelníkový pruh se sousedstvím jsou úvodní vrcholy 0, 2, 4, 6 atd. Pro pruh čáry se sousedstvím jsou úvodní vrcholy 1, 2, 3 atd. Sousední primitiv na druhé straně nemá žádný přední vrchol.
Následující obrázek znázorňuje řazení vrcholů pro všechny primitivní typy, které může vstupní assembler vytvořit.
Symboly na předchozím obrázku jsou popsány v následující tabulce.
| Symbol | Jméno | Popis |
|---|---|---|
|
Vrchol | Bod v prostorovém prostoru. |
symbol ![]() |
Směr vinutí | Pořadí vrcholů při sestavení primitivního. Může být ve směru hodinových ručiček nebo proti směru hodinových ručiček; zadejte to voláním ID3D11Device1::CreateRasterizerState1. |
symbol vrcholů |
Přední vrchol | První nesouvislý vrchol v primitivu, který obsahuje data podle konstanty. |
Generování více pruhů
Můžete vygenerovat více pruhů pomocí řezání pruhů. Vyjmutí pruhu můžete provést explicitním voláním funkce RestartStrip HLSL nebo vložením speciální hodnoty indexu do vyrovnávací paměti indexu. Tato hodnota je –1, což je 0xffffffff pro 32bitové indexy nebo 0xffff pro 16bitové indexy. Index –1 označuje explicitní "vyjmutí" nebo "restart" aktuálního pruhu. Předchozí index dokončí předchozí primitivní nebo pruh a další index spustí nový primitivní nebo pruh. Další informace o generování více pruhů naleznete v tématu Geometry-Shader Fáze.
Poznámka
Potřebujete úroveň funkcí hardwaru 10.0 nebo vyšší, protože ne veškerý hardware 10level9 tuto funkci implementuje.
Související témata
-
fáze kanálu (Direct3D 10)

vrcholů