Domanda

Ho una rete di polilinee e vorrei visualizzare tutte le parti delle linee che si trovano all'interno di un determinato riquadro X-Y. Attualmente sto eseguendo il rendering delle linee in OpenGL usando un GL_LINE_STRIP e funziona bene. Tuttavia, se il limite della casella X-Y attraversa una delle linee (tra i vertici), c'è un buon modo per visualizzare solo la parte della linea che è all'interno della casella?

grazie,

Jeff

È stato utile?

Soluzione

Se la tua scatola è solo un normale rettangolo tridimensionale, allineato agli assi, puoi usare la funzione glScissor. In poche parole definisce un rettangolo 2D in coordinate dello schermo in cui avviene tutto il disegno.

Se il tuo caso è più complicato (ad esempio potresti avere un rettangolo su un piano all'interno di una scena 3D o giù di lì ..) puoi prima disegnare il tuo rettangolo nel buffer dello stencil e abilitare il test dello stencil per il rendering della linea. Tale approccio offre una flessibilità illimitata sulla forma che limita il disegno, ma potrebbe essere leggermente più lento durante il rendering e richiede uno sforzo maggiore per l'installazione.

Altri suggerimenti

Penso che Nils Pipenbrinck ti abbia dato le due migliori opzioni, ma ne lancerò un'altra solo per completezza: piani di clip ( glClipPlane () ).

Detto questo, penso che glScissor () sia la soluzione più semplice se sarà sempre allineata alla finestra.

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