Domanda

Sto scrivendo un gioco in C ++ e ho un livello costituito da molte maglie separate, ognuna con il proprio buffer di vertici. sto usando vmmlib (libreria di vettore / matrice compatibile con gl libero brillante) per creare il mio frustum culler e testarlo contro la sfera di delimitazione di ogni mesh nel livello. purtroppo il mio livello può consistere in un massimo di 800 mesh e iterando attraverso tutte e ciascuna le trame è lenta. qual è il modo migliore per ottimizzare il codice in modo da non dover guardare tutte le mesh su ogni iterazione? Volumi limitanti all'interno del frustum?

È stato utile?

Soluzione

Sì l'oggetto di delimitazione è la strada da percorrere, dovresti fare attenzione nella scelta di un volume di delimitazione adeguato, ad esempio per le maglie che si muovono sulla scena come i robot e non si sdraiano un cilindro è il volume migliore, altri sono meglio rappresentati da cubi (asse allineato o meno).

Quindi si crea un quadrifoglio o un ottetto per dividere gerarchicamente i dati mesh.

Funziona molto bene per l'abbattimento frustrato all'aperto.

Per gli interni un BSP è il modo migliore di procedere poiché hai molti muri per dividere il tuo spazio. Dovresti comunque limitare il volume delle tue maglie che hanno più di 10 poligoni.

Altri suggerimenti

Volevo solo aggiungere che ora un giorno i portali sono generalmente preferiti rispetto o in combinazione con i BSP, ma non ho abbastanza reputazione per modificare il post originale.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top