Megosztás a következőn keresztül:


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.

Direct3D-erőforrások

Rendering from Vertex and Index Buffers (Direct3D 9)

indexpufferek (Direct3D 9)