2012-11-13 16 views
5

Sto imparando DirectX in questo momento, ho letto molto su VertexBuffer. Dal momento che non puoi imparare dalla programmazione semplicemente leggendo, sto facendo un piccolo motore con DX11 (beh, la mia domanda non dipende dalla versione)DirectX - Come funziona VertexBuffer?

Per quanto ho capito in un VertexBuffer, memorizzo Vertices, e in realtà io immagazzino sulla scheda grafica. Bene, ho letto dei buffer dinamici e statici. Quindi, se ho capito bene, un buffer statico è inizializzato con i vertici ei vertici inizializzati non cambieranno. OK, ma quando ne ho davvero bisogno. Intendo in una partita o in qualsiasi altra cosa, quando ho dei vertici costanti? Forse per alcuni oggetti dell'interfaccia utente ..? - ma anche questi non sono costanti ogni volta .. puoi spostare la loro posizione 2D ... ecc.

Il prossimo punto riguarda i buffer di vertice dinamici, ad esempio: ho un buffer con alcuni vertici in esso, questi i vertici sono disegnati. Quindi voglio aggiungere o rimuovere alcuni vertici. Che ora .. Quindi vorrei semplicemente "aggiornare" il buffer. Ma è davvero giusto e buono per le prestazioni? Immagina un editor di terreno. Lì devi aggiornare tonnellate di vertici.

risposta

7

Intendo in un gioco o qualsiasi altra cosa, quando sono presenti i vertici costanti?

In ogni momento. Ad esempio, la geometria statica, gli oggetti dell'interfaccia utente che hai citato ecc. C'è una leggera incomprensione da parte tua sul movimento degli oggetti, da qui la confusione: non muovi gli oggetti cambiando i loro vertici. Invece, metti i tuoi vertici attraverso la pipeline dello shader. Nel vertex shader, puoi applicare trasformazioni arbitrarie ai tuoi vertici. Quindi, per esempio, se hai un albero che viene spostato nel mondo per qualche motivo (forse è su un'isola galleggiante o qualcosa del genere), invece di cambiare i vertici che compongono l'albero, cambi la trasformazione che viene applicata ai vertici .

immaginare un editor di terreno

Dipende da quello che si suppone che il vostro editor di terreni da fare, ma in genere ancora non si ha intenzione di cambiare i vertici qui. Cioè quando si modifica l'altezza, piuttosto che spostare i vertici su e giù, si scrive su una mappa dell'altezza (la maggior parte delle volte una trama in scala di grigi) e si calcola nuovamente la trasformazione sulla GPU nella pipeline dello shader.