Orario: 23-05-2013, 1:33 Benvenuto ospite! (Log inRegistrati)


Rispondi 
[OpenGL] Creare un scrollviewer
Autore Messaggio
kuma
Senior Member

Messaggi: 369
Registrato: Jun 2011
Offline Offline
#1 [OpenGL] Creare un scrollviewer
0
ciao ragazzi,
sto sviluppando in opentk una serie di controlli per la ui (button, label, grid...) e ora devo procedere nel fare una scrollviewer.

con la mia poca esperienza in opengl sono arrivato alla conclusione che l'unico modo per ottenere un buon risultato è andare di fbo (frame buffer object) ma è questa l'unica soluzione?

considerando il fatto che devo sviluppare anche una textbox (e quindi magari in una view ci possono essere molte textbox) il problema mi si ripone quando i caratteri superano la larghezza del controllo stesso ma non mi sembra il massimo fare un fbo per ogni textbox.Hmm

ho cercato in internet ma ho trovato poca cosa.

premetto che texture atlas non fanno al caso mio, perchè io ho una serie di triangoli che devo muovere e tagliare (o nascondere) quando non più visibili.

suggerimenti? o vado di fbo? Hmm
thanks

Fabio Menta
facebook
(Questo messaggio è stato modificato l'ultima volta il: 11-07-2012 21:17 da kuma.)
11-07-2012 21:15
Visita il sito web di questo utente Trova tutti i messaggi di questo utente Cita questo messaggio nella tua risposta
TheCrib
Indie Pellerossa

Messaggi: 5,188
Registrato: Sep 2010
Offline Offline
#2 RE: [OpenGL] Creare un scrollviewer
0
Why ? ..Pecche' ?

In termini pratici, lo scroll non e' necessariamente una bitmap singola.. quanto semplicemente i contenuti ridisegnati a coordinate diverse.

Poi, per eventualmente limitare l'area di rendering ad un riquadro usa glScissor()

Davide Pasca
http://v5.kazzuya.com - @109mae
http://oyatsukai.com - @oyatsukai
"O frechete !" - M.Magnotta
11-07-2012 21:40
Visita il sito web di questo utente Trova tutti i messaggi di questo utente Cita questo messaggio nella tua risposta
kuma
Senior Member

Messaggi: 369
Registrato: Jun 2011
Offline Offline
#3 R: [OpenGL] Creare un scrollviewer
0
Hai perfettamente ragione, e che mi mancava proprio questo comando. Ho letto la descrizione e sembra che faccia a caso mio!
Mi hai salvato un'altra volta!Smile


Inviato dal mio Liquid MT con Tapatalk 2

Fabio Menta
facebook
11-07-2012 22:20
Visita il sito web di questo utente Trova tutti i messaggi di questo utente Cita questo messaggio nella tua risposta
kuma
Senior Member

Messaggi: 369
Registrato: Jun 2011
Offline Offline
#4 RE: [OpenGL] Creare un scrollviewer
0
ho un attimo approfondito la cosa e mi sorge qualche dubbio, cercando qualche esempio in internet molti suggeriscono di definire più viewport Hmm comunque a parte questo mi sorge un dubbio HmmHmm in entrambi i casi non avrò mai una soluzione perfetta nel senso che funzionerà soltanto se non avrò nessuna rotazione nell'asse Y o Z giusto? (poteri risolvere questo solo andando di fbo) Hmm

Fabio Menta
facebook
12-07-2012 0:28
Visita il sito web di questo utente Trova tutti i messaggi di questo utente Cita questo messaggio nella tua risposta
TheCrib
Indie Pellerossa

Messaggi: 5,188
Registrato: Sep 2010
Offline Offline
#5 RE: [OpenGL] Creare un scrollviewer
0
La viewport ti permette di impostare una finestra virtuale al livello di coordinate.

Mettiamo che vuoi disegnare in un rettangolo a 20,20 di grandezza 100,100 ..allora lo imposti con glViewport(20,20,100,100) e quello diventa il tuo nuovo schermo.
Oltre ovviamente a poi cambiare eventuale projection matrix se necessario.

glScissor() serve comunque ad evitare che il rendering vada fuori dalla viewport. Perche' la viewport di suo non fa il clipping (vedi common pitfall #10)

Per quanto riguarda le rotazioni.. non sono sicuro di capire cosa intendi.. se vuoi dire che vorresti ruotare il box, dentro il quale vuoi renderarci, allora si.. glScissor() non va bene, perche' lavora solo in coordinate "window".. che in gergo vuol dire le coordinate dello schermo in pixel.

Se il box non e' un rettangolo allineato allo schermo e devi quindi fare un clipping piu' complesso. Per questo, ES 1.1 supporta glClipPlane() ma pare non ci sia su ES 2.
Quindi alla fine, o esegui tu una fase di clipping sulla geometria (generalmente sconsigliato), oppure vai proprio di FBO ..che diventa la soluzione piu' ragionevole.

Davide Pasca
http://v5.kazzuya.com - @109mae
http://oyatsukai.com - @oyatsukai
"O frechete !" - M.Magnotta
12-07-2012 6:56
Visita il sito web di questo utente Trova tutti i messaggi di questo utente Cita questo messaggio nella tua risposta
Gabriele
Posting Freak

Messaggi: 4,383
Registrato: Oct 2010
Offline Offline
#6 RE: [OpenGL] Creare un scrollviewer
0
Curiosità:

se uso glScissor al di fuori di un semplice contesto dove voglio tagliare i pixel fuori da un'aria (vedi le gui), mi conviene usarlo in termini di prestazioni per definire i bordi dell'area "di gioco" oppure no?
A livello prestazionale che mi cambia?

Gabriele Di Bari
Account G+
Account bitbucket
Account GITHUB
E ricordate: ((VMJava*)(NULL))->~VMJava();
(Questo messaggio è stato modificato l'ultima volta il: 12-07-2012 7:14 da Gabriele.)
12-07-2012 7:10
Visita il sito web di questo utente Trova tutti i messaggi di questo utente Cita questo messaggio nella tua risposta
kuma
Senior Member

Messaggi: 369
Registrato: Jun 2011
Offline Offline
#7 R: [OpenGL] Creare un scrollviewer
0
Si, intendevo dire ruotare il box.
Ok allora avevo capito bene, se mi serve qualcolsa di complicato vado di fbo altrimenti glscissor per qualcosa di 2d piatto e regolare.
Thanks. Smile

Inviato dal mio Liquid MT con Tapatalk 2

(12-07-2012 7:10)Gabriele ha scritto:  Curiosità:

se uso glScissor al di fuori di un semplice contesto dove voglio tagliare i pixel fuori da un'aria (vedi le gui), mi conviene usarlo in termini di prestazioni per definire i bordi dell'area "di gioco" oppure no?
A livello prestazionale che mi cambia?

Per quello che ho capito io, OpenGL questo lo fa già in automatico con la viewport impostata.

Inviato dal mio Liquid MT con Tapatalk 2

Fabio Menta
facebook
(Questo messaggio è stato modificato l'ultima volta il: 12-07-2012 7:37 da kuma.)
12-07-2012 7:20
Visita il sito web di questo utente Trova tutti i messaggi di questo utente Cita questo messaggio nella tua risposta
TheCrib
Indie Pellerossa

Messaggi: 5,188
Registrato: Sep 2010
Offline Offline
#8 RE: [OpenGL] Creare un scrollviewer
0
(12-07-2012 7:10)Gabriele ha scritto:  se uso glScissor al di fuori di un semplice contesto dove voglio tagliare i pixel fuori da un'aria (vedi le gui), mi conviene usarlo in termini di prestazioni per definire i bordi dell'area "di gioco" oppure no?
A livello prestazionale che mi cambia?

Sono abbastanza sicuro che la cosa non faccia nessuna differenza rispetto al clipping implicito che deve avvenire per l'area dello schermo fisico... ma e' una cosa a cui uno un po' ci spera 8)

Davide Pasca
http://v5.kazzuya.com - @109mae
http://oyatsukai.com - @oyatsukai
"O frechete !" - M.Magnotta
(Questo messaggio è stato modificato l'ultima volta il: 12-07-2012 8:33 da TheCrib.)
12-07-2012 7:41
Visita il sito web di questo utente Trova tutti i messaggi di questo utente Cita questo messaggio nella tua risposta
Gabriele
Posting Freak

Messaggi: 4,383
Registrato: Oct 2010
Offline Offline
#9 RE: [OpenGL] Creare un scrollviewer
0
(12-07-2012 7:41)TheCrib ha scritto:  
(12-07-2012 7:10)Gabriele ha scritto:  se uso glScissor al di fuori di un semplice contesto dove voglio tagliare i pixel fuori da un'aria (vedi le gui), mi conviene usarlo in termini di prestazioni per definire i bordi dell'area "di gioco" oppure no?
A livello prestazionale che mi cambia?

Sono abbastanza sicuro che la cosa non faccia nessuna differenza rispetto al clipping implicito che deve avvenire per area dello schermo fisico... ma e' una cosa a cui uno un po' ci spera 8)
A ok Asd

Gabriele Di Bari
Account G+
Account bitbucket
Account GITHUB
E ricordate: ((VMJava*)(NULL))->~VMJava();
12-07-2012 8:27
Visita il sito web di questo utente Trova tutti i messaggi di questo utente Cita questo messaggio nella tua risposta
Rispondi 


Vai al forum: