Hörnbuffertar (Direct3D 9)
Hörnbuffertar, som representeras av IDirect3DVertexBuffer9-gränssnittet, är minnesbuffertar som innehåller hörndata. Brytpunktsbuffertar kan innehålla alla hörntyper – transformerade eller otransformerade, upplysta eller obelysta – som kan återges med hjälp av återgivningsmetoderna i IDirect3DDevice9-gränssnittet. Du kan bearbeta hörnen i en hörnbuffert för att utföra åtgärder som transformering, belysning eller generering av urklippsflaggor. Transformering utförs alltid.
Flexibiliteten i hörnbuffertar gör dem idealiska mellanlagringsplatser för återanvändning av transformerad geometri. Du kan skapa en enda brytpunktsbuffert, transformera, lysa och klippa hörnen i den och återge modellen i scenen så många gånger som behövs utan att transformera den igen, även med ändringar i mellanlagrat återgivningstillstånd. Detta är användbart när du återger modeller som använder flera texturer: geometrin omvandlas bara en gång, och sedan kan delar av den återges efter behov, interfolierade med de nödvändiga strukturändringarna. Återgivningstillståndsändringar som görs när hörnen har bearbetats börjar gälla nästa gång hörnen bearbetas.
Beskrivning
En brytpunktsbuffert beskrivs i termer av dess funktioner: om den bara kan finnas i systemminnet, om den bara används för skrivåtgärder och vilken typ och antal hörn den kan innehålla. Alla dessa egenskaper hålls i en D3DVERTEXBUFFER_DESC struktur.
Formatmedlemmen är inställd på D3DFMT_VERTEXDATA för att indikera att detta är en brytpunktsbuffert. Typen identifierar resurstypen för hörnbufferten. Medlemmen i användningsstrukturen innehåller allmänna kapacitetsflaggor. Flaggan D3DUSAGE_SOFTWAREPROCESSING anger att hörnbufferten ska användas med bearbetning av programvaruhörn. Förekomsten av flaggan D3DUSAGE_WRITEONLY i Användning anger att brytpunktsbuffertminnet endast används för skrivåtgärder. Detta frigör drivrutinen för att placera hörndata på den bästa minnesplatsen för att aktivera snabb bearbetning och återgivning. Om flaggan D3DUSAGE_WRITEONLY inte används är det mindre troligt att drivrutinen placerar data på en plats som är ineffektiv för läsåtgärder. Detta offrar viss bearbetnings- och återgivningshastighet. Om den här flaggan inte anges antas det att program utför läs- och skrivåtgärder på data i brytpunktsbufferten.
Poolen anger den minnesklass som allokeras för brytpunktsbufferten. Flaggan D3DPOOL_SYSTEMMEM anger att systemet skapade hörnbufferten i systemminnet.
Medlemmen Storlek lagrar storleken, i byte, på brytpunktsbuffertdata. FVF-medlemmen innehåller en kombination av D3DFVF- som identifierar typen av hörn som bufferten innehåller.
Minnespool och användning
Du kan skapa hörnbuffertar med IDirect3DDevice9::CreateVertexBuffer-metoden, som tar pool -parametrar (minnesklass) och användningsparametrar. IDirect3DDevice9::CreateVertexBuffer kan också skapas med en angiven FVF-kod för användning i fast funktionshörnbearbetning eller som utdata från processhörn. Mer information finns i FVF-hörnbuffertar (Direct3D 9).
Flaggan D3DUSAGE_SOFTWAREPROCESSING kan anges när bearbetning av blandat läge eller programvaruhörn (D3DCREATE_MIXED_VERTEXPROCESSING/D3DCREATE_SOFTWARE_VERTEXPROCESSING) är aktiverad för enheten. D3DUSAGE_SOFTWAREPROCESSING måste ställas in för att buffertar ska användas med bearbetning av programvaruhörn i blandat läge, men det bör inte ställas in för bästa möjliga prestanda när maskinvaruhörnbearbetning används i blandat läge. (D3DCREATE_HARDWARE_VERTEXPROCESSING). Att ange D3DUSAGE_SOFTWAREPROCESSING är dock det enda alternativet när en enda buffert ska användas med både maskin- och programvaruhörnbearbetning. D3DUSAGE_SOFTWAREPROCESSING tillåts för både blandade och programvaruenheter.
Det är möjligt att tvinga hörn- och indexbuffertar till systemminnet genom att ange D3DPOOL_SYSTEMMEM, även när hörnbearbetningen görs i maskinvaran. Det här är ett sätt att undvika alltför stora mängder sidlåst minne när en drivrutin lägger dessa buffertar i AGP-minne.
I det här avsnittet beskrivs de begrepp som krävs för att förstå och använda hörnbuffertar i ett Direct3D-program. Informationen är indelad i följande avsnitt.
- Skapa en hörnbuffert (Direct3D 9)
- åtkomst till innehållet i en hörnbuffert (Direct3D 9)
- rendering från en hörnbuffert (Direct3D 9)
- FVF-hörnbuffertar (Direct3D 9)
- fast funktionshörnbearbetning (Direct3D 9)
- Programmable Vertex Processing (Direct3D 9)
- enhetstyper och krav för hörnbearbetning (Direct3D 9)
Relaterade ämnen