Domanda

Non sono del tutto sicuro se posso fare quello che voglio qui, ma ho un sacco di oggetti viene eseguito il rendering in OpenGL (utilizzando JOGL). Per un gruppo di oggetti, voglio assicurare che certi oggetti di quel gruppo sono resi davanti ad altri oggetti in quel gruppo. Ho provato di compensazione il bit depth buffer e rendere gli oggetti "di facciata" scorso, e che funziona, tranne che scombina altra profondità buffer sullo schermo.

Che si tratta di è che ho un elenco di oggetti viene eseguito il rendering e voglio assicurare che certi oggetti in tale elenco sono resi davanti ad altri oggetti (sono tutti allo stesso coordinata Z però). C'è un modo per farlo?

Grazie, Jeff

È stato utile?

Soluzione

Questa è una tecnica molto comune per disegnare oggetti trasparenti (oggetti che hanno parti con alfa! = 1).

L'approccio più comune è quello di costruire prima un albero di oggetti da trarre che si può quindi ordinare insieme alla "profondità" dopo essere passato attraverso la proiezione * matrici della fotocamera. In pratica invece di gettare ciecamente triangoli alla GPU, di inviare gli oggetti uno ad uno come li stai elaborazione in tutto il mondo per un buffer temporaneo. Questi oggetti hanno piena conoscenza di ogni triangolo e ogni colore vertex / vertex shader / nome della texture + id ecc Poi si può ordinare il buffer (o ingenuamente, oggetto per oggetto, o una piena regola sorta basata su patch simili attraverso gli oggetti).

Il trucco glDepthMask, se ricordo bene, più o meno così:

glDepthMask(true);
drawOpaqueObjects();
glDepthMask(false);
drawTransparentObjects();

Per ottenere i migliori risultati gli oggetti trasparenti sono ordinati back-to-front, ma nella maggior parte dei (semplici) applicazioni questo non ha importanza.

modifica: notare che per il 2 ° tecnica, mentre si attiva e quindi disattivare la profondità del buffer SCRITTURA, si utilizza ancora buffer di profondità COLLAUDO, oggetti in modo trasparente dietro gli oggetti normali (una punta casco "in" lo schermo, per esempio) ha vinto' t vengono disegnati.

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