Csúcspufferek (Direct3D 9)
Az IDirect3DVertexBuffer9 interfész által képviselt csúcspufferek olyan memóriapufferek, amelyek csúcsadatokat tartalmaznak. A csúcspufferek bármilyen csúcstípust tartalmazhatnak – átalakítva vagy nem átalakítva, megvilágítva vagy kivilágítva –, amely az IDirect3Device9 interfész renderelési módszereinek használatával jeleníthető meg. A csúcspontok pufferében lévő csúcspontokat feldolgozhatja olyan műveletek végrehajtásához, mint az átalakítás, a világítás vagy a kivágási jelzők létrehozása. Az átalakítás mindig történik.
A csúcspontpufferek rugalmassága ideális átmeneti pontokká teszi őket az átalakított geometria újrafelhasználására. Létrehozhat egyetlen csúcspuffert, átalakíthatja, megvilágíthatja és kivághatja benne a csúcsokat, és szükség szerint többször renderelheti a modellt a jelenetben anélkül, hogy újra átalakítanák, még az interleaved renderelési állapot változásaival is. Ez akkor hasznos, ha több textúrát használó modelleket jelenít meg: a geometria csak egyszer lesz átalakítva, majd szükség szerint renderelhető, a szükséges anyagminta-módosításokkal együtt. A csúcspontok feldolgozását követően végrehajtott renderelési állapotmódosítások a csúcspontok következő feldolgozásakor lépnek érvénybe.
Leírás
A csúcspufferek a képességei alapján vannak leírva: ha csak a rendszermemóriában létezhet, ha csak írási műveletekhez használják, és hogy milyen típusú és számú csúcsot tartalmazhat. Ezek a tulajdonságok D3DVERTEXBUFFER_DESC struktúrában vannak tárolva.
A Formátum tag D3DFMT_VERTEXDATA értékre van állítva, amely azt jelzi, hogy ez egy csúcspuffer. A Típus azonosítja a csúcspuffer erőforrástípusát. A Használati struktúra tag általános képességjelzőket tartalmaz. A D3DUSAGE_SOFTWAREPROCESSING jelző azt jelzi, hogy a csúcspuffert szoftveres csúcspont-feldolgozással kell használni. A D3DUSAGE_WRITEONLY jelző jelenléte a Használatban azt jelzi, hogy a csúcspuffer memóriája csak írási műveletekhez használható. Ez felszabadítja az illesztőprogramot, hogy a csúcsadatokat a legjobb memóriahelyre helyezze a gyors feldolgozás és renderelés érdekében. Ha a D3DUSAGE_WRITEONLY jelző nincs használatban, az illesztőprogram kevésbé valószínű, hogy olyan helyre helyezi az adatokat, amely nem megfelelő az olvasási műveletekhez. Ez feláldoz némi feldolgozási és renderelési sebességet. Ha ez a jelző nincs megadva, akkor feltételezzük, hogy az alkalmazások olvasási és írási műveleteket hajtanak végre a csúcspufferen belüli adatokon.
A készlet a csúcspufferhez lefoglalt memóriaosztályt adja meg. A D3DPOOL_SYSTEMMEM jelző azt jelzi, hogy a rendszer létrehozta a csúcspuffert a rendszer memóriájában.
A Méret tag bájtban tárolja a csúcspuffer adatait. Az FVF-tag D3DFVF kombinációját tartalmazza, amely azonosítja a puffer által tartalmazott csúcsok típusát.
Memóriakészlet és használat
Csúcspuffereket az IDirect3DDevice9::CreateVertexBuffer metódussal hozhat létre, amely a készlet (memóriaosztály) és a használati paramétereket veszi igénybe. IDirect3DDevice9::CreateVertexBuffer is létrehozható egy megadott FVF-kóddal rögzített függvény csúcsának feldolgozásához vagy folyamat csúcspontjainak kimeneteként. További információ: FVF Vertex Buffers (Direct3D 9).
A D3DUSAGE_SOFTWAREPROCESSING jelző akkor állítható be, ha az adott eszközhöz engedélyezve van a vegyes módú vagy szoftveres csúcsfeldolgozás (D3DCREATE_MIXED_VERTEXPROCESSING/D3DCREATE_SOFTWARE_VERTEXPROCESSING). D3DUSAGE_SOFTWAREPROCESSING kell beállítani, hogy a pufferek vegyes módban használják a szoftveres csúcspont-feldolgozást, de a hardveres csúcspontok vegyes módban történő feldolgozásakor nem szabad a lehető legjobb teljesítményt beállítani. (D3DCREATE_HARDWARE_VERTEXPROCESSING). A D3DUSAGE_SOFTWAREPROCESSING beállítása azonban az egyetlen lehetőség, ha egyetlen puffert kell használni a hardver- és szoftvercsúcs-feldolgozáshoz is. D3DUSAGE_SOFTWAREPROCESSING vegyes és szoftveres eszközökön egyaránt engedélyezett.
A csúcspontok és indexpufferek a rendszermemória számára is kényszeríthető D3DPOOL_SYSTEMMEM megadásával, még akkor is, ha a csúcsok feldolgozása hardverben történik. Így elkerülheti a túlzottan nagy mennyiségű lapzárt memóriát, amikor egy illesztőprogram ezeket a puffereket az AGP-memóriába helyezi.
Ez a szakasz bemutatja a Direct3D-alkalmazások csúcspuffereinek megértéséhez és használatához szükséges fogalmakat. Az információk a következő szakaszokra oszlanak.
- Csúcspuffer (Direct3D 9) létrehozása
- Csúcspuffer (Direct3D 9) tartalmának elérése
- Rendering from a Vertex Buffer (Direct3D 9)
- FVF csúcspufferek (Direct3D 9)
- Rögzített függvény csúcsának feldolgozása (Direct3D 9)
- programozható csúcspontfeldolgozás (Direct3D 9)
- eszköztípusok és csúcsfeldolgozási követelmények (Direct3D 9)
Kapcsolódó témakörök