Primitiva topologier
Direct3D 10 och högre stöder flera primitiva typer (eller topologier) som representeras av den D3D_PRIMITIVE_TOPOLOGY uppräknade typen. Dessa typer definierar hur hörn tolkas och återges av pipelinen.
- grundläggande primitiva typer
- primitiva angränsande
- lindningsriktning och ledande hörnpositioner
- generera flera remsor
- Relaterade ämnen
Grundläggande primitiva typer
Följande grundläggande primitiva typer stöds:
En visualisering av varje primitiv typ finns i diagrammet senare i det här avsnittet i Lindningsriktning och inledande hörnpositioner.
Indata-assembler-fasen läser data från hörn- och indexbuffertar, monterar data i dessa primitiver och skickar sedan data till de återstående pipelinestegen. (Du kan använda metoden ID3D11DeviceContext::IASetPrimitiveTopology för att ange den primitiva typen för indata-assembler-fasen.)
Primitiv angränsande
Alla Direct3D 10- och högre primitiva typer (förutom punktlistan) är tillgängliga i två versioner: en primitiv typ med angränsande och en primitiv typ utan angränsande. Primitiver med angränsande innehåller några av de omgivande hörnen, medan primitiver utan angränsande endast innehåller hörnen av målprioriten. Till exempel har radlistans primitiva (representeras av D3D_PRIMITIVE_TOPOLOGY_LINELIST-värdet) en motsvarande radlista primitiv som innehåller angränsande (representeras av D3D_PRIMITIVE_TOPOLOGY_LINELIST_ADJ-värdet.)
Närliggande primitiver är avsedda att ge mer information om din geometri och är endast synliga genom en geometriskuggning. Angränsande är användbart för geometriskuggare som använder silhuettidentifiering, utskjutning av skuggvolymer och så vidare.
Anta till exempel att du vill rita en triangellista med angränsande. En triangellista som innehåller 36 hörn (med angränsande) ger 6 slutförda primitiver. Primitiver med angränsande (utom linjeremsor) innehåller exakt dubbelt så många hörn som motsvarande primitiva utan angränsande, där varje ytterligare hörn är ett intilliggande hörn.
Lindningsriktning och inledande hörnpositioner
Som du ser i följande bild är ett inledande hörn det första icke-intilliggande hörnet i ett primitivt hörn. En primitiv typ kan ha flera inledande hörn definierade, så länge var och en används för en annan primitiv. För en triangelremsa med angränsande hörn är de inledande hörnen 0, 2, 4, 6 och så vidare. För en linjeremsa med angränsande hörn är de inledande hörnen 1, 2, 3 och så vidare. En angränsande primitiv, å andra sidan, har inget inledande hörn.
Följande bild visar hörnordningen för alla primitiva typer som indatamonteraren kan producera.
Symbolerna i föregående bild beskrivs i följande tabell.
Symbol | Namn | Beskrivning |
---|---|---|
![]() |
Hörn | En punkt i 3D-blanksteg. |
![]() |
Lindningsriktning | Hörnordningen när du monterar en primitiv. Kan vara medsols eller motsols; ange detta genom att anropa ID3D11Device1::CreateRasterizerState1. |
![]() |
Inledande hörn | Det första icke-intilliggande hörnet i en primitiv som innehåller data per konstant. |
Generera flera remsor
Du kan generera flera remsor genom bandskärning. Du kan utföra en strip cut genom att uttryckligen anropa funktionen RestartStrip HLSL eller genom att infoga ett särskilt indexvärde i indexbufferten. Det här värdet är –1, vilket är 0xffffffff för 32-bitarsindex eller 0xffff för 16-bitarsindex. Ett index på –1 anger en explicit "klipp ut" eller "omstart" av den aktuella remsan. Det tidigare indexet slutför den tidigare primitiven eller remsan och nästa index startar en ny primitiv eller remsa. Mer information om hur du genererar flera remsor finns i Geometry-Shader Stage.
Not
Du behöver funktionsnivå 10.0 eller högre maskinvara eftersom inte all maskinvara på 10nivå9 implementerar den här funktionen.
Relaterade ämnen