2012-06-19 12 views
5

Sto creando una GUI in OpenGL (in particolare lwjgl). Ho provato a cercare modi diversi per farlo, ma ho difficoltà a trovare esattamente quello che voglio. Non voglio usare nessuna libreria esterna (solo quelle costruite in OpenGL, anche cercando di evitare l'uso di GLUT) e mi piacerebbe farlo funzionare su qualsiasi cosa supporti OpenGL (ad esempio Frame Buffer Objects non funziona su vecchi schede grafiche).OpenGL disegna l'oggetto parziale nel riquadro scorrevole

Sto creando una GUI 3D con un pannello scorrevole come componente. Il problema è che non so come disegnare un componente GUI parziale senza fare molti calcoli per renderne solo una parte. Sto creando i componenti con primitive OpenGL, non con texture. Speravo che ci fosse un modo semplice per farlo come usare più viewport. In realtà non capisco nemmeno cosa siano le finestre.

In breve: ho bisogno di avere un pannello scorrevole come componente che si sovrappone ad altri componenti della GUI (dato che sarà un menu a discesa) e che nessuno dei componenti del mio pannello disegni all'esterno del mio pannello.

risposta

6

Se si desidera evitare di disegnare pixel esterni a una regione rettangolare (e penso che sia quello che stai chiedendo), lo glScissor è esattamente quello che stai cercando.

In lwjgl, è possibile trovare la funzione in org.lwjgl.opengl.GL11.

+1

È anche possibile usufruire di GL_GLIP_PLANEs, che consentono di ritagliare nello spazio modello (nel caso in cui le coordinate della GUI non corrispondano ai pixel della vista). – Kromster

+0

Grazie, è esattamente quello che stavo cercando – axelrod360

1

Se si desidera scorrere una scena più grande all'interno di una regione fissa sullo schermo, la via più semplice da percorrere è semplicemente modificare la matrice di proiezione per la posizione di scorrimento e ridisegnare la scena. Se stai usando gluPerspective per configurare la tua matrice di proiezione, dovrai convertirla in una chiamata diretta a glFrustum; se stai usando glOrtho è molto più semplice.

Ricordare che lo "scorrimento" di una vista prospettica non ha un modo giusto di fare le cose - dipende dal tipo di effetto che si desidera ottenere e dal tipo di distorsione che si desidera vicino ai bordi del viewport generale .

Problemi correlati