Questo sito utilizza cookies, anche di terze parti, per mostrare pubblicità e servizi in linea con il tuo account. Leggi l'informativa sui cookies.
Username: Password: oppure
C/C++ - classe GUI con glut
Forum - C/C++ - classe GUI con glut

Avatar
munkaka (Member)
Pro


Messaggi: 119
Iscritto: 07/09/2008

Segnala al moderatore
Postato alle 20:34
Martedì, 11/05/2010
ciao
sto facendo un programma in opengl per la scuola e devo creare una classe GUI che gestisce la tastiera e il mouse
il problema é che usando glut le funzioni che gestiscono mouse e tastiera devono essere funzioni globali del programma e non possono essere le funzioni di una classe, ma allora come faccio a far gestire l'interfaccia da questa classe se non posso impostare le sue funzioni come predefinite per gestire tastiera e mouse? per intanto ho risolto chiamando le funzioni della classe all'interno della funzione globale, di conseguenza devo avere un'istanza della classe che sia anch'essa globale perché non posso passarla come argomento a questo tipo di funzioni dato che i loro prototipi sono definiti da glut.
ci sono altre soluzioni?

Ultima modifica effettuata da munkaka il 11/05/2010 alle 20:40


Q: I need help, give me some pointers!
R: 0x3A28213A, 0x6339392C, 0x7363684E, ...
PM Quote
Avatar
John (Ex-Member)
Pro


Messaggi: 191
Iscritto: 18/11/2007

Segnala al moderatore
Postato alle 20:44
Martedì, 11/05/2010
ho avuto un problema simile una volta..
mi pare proprio che sia l'unica soluzione, a meno che non ti crei delle variabili (o una classe) comune alla classe che contiene la GUI e il main dove memorizzi tutte le informazioni che ti servono..
credo comunque che la tua soluzione sia più leggera. ti dà qualche problema in particolare o il tuo era solo un dubbio?


Costruisci come se dovesse durare 1000 anni, vivi come se fosse l'ultimo giorno....

Linux user #510634
PM Quote
Avatar
munkaka (Member)
Pro


Messaggi: 119
Iscritto: 07/09/2008

Segnala al moderatore
Postato alle 20:49
Martedì, 11/05/2010
no non mi crea problemi, però non mi piacciono molto la variabili globali, e al mio prof neanche, quindi se vede una variabile globale nel mio progetto che non é necessaria mi toglie punti sicuramente
non ho capito la tua soluzione, me la puoi rispiegare? devo fare una classe che contenga un'istanza della classe GUI e anche il main()? é questo che intendevi o capito male?


Q: I need help, give me some pointers!
R: 0x3A28213A, 0x6339392C, 0x7363684E, ...
PM Quote
Avatar
John (Ex-Member)
Pro


Messaggi: 191
Iscritto: 18/11/2007

Segnala al moderatore
Postato alle 20:57
Martedì, 11/05/2010
no, una soluzione molto più terra-terra, ma forse troppo banale se è da presentare ad un professore..

ti crei delle variabili dove ti memorizzi le informazioni(riguardanti l'input) che ti servono, magari raccolte in una classe, e le tieni in comune a GUI e main.
Ad esempio, un array per la tastiera, delle integer per posizione e stato del mouse ecc..
La GUI aggiorna queste variabili, che poi sono lette dal main.

E' un metodo molto elementare, ma credo sia l'unica alternativa alle global!!
(che tra l'altro non hanno nessuna controindicazione se usate con moderazione, non so perchè al tuo prof non vadano bene)


Costruisci come se dovesse durare 1000 anni, vivi come se fosse l'ultimo giorno....

Linux user #510634
PM Quote
Avatar
munkaka (Member)
Pro


Messaggi: 119
Iscritto: 07/09/2008

Segnala al moderatore
Postato alle 21:08
Martedì, 11/05/2010
ma queste variabili devono comunque essere globali no? perché devono poter essere modificate dalle funzioni che ricevono gli input, e non posso passarle come parametri
ho capito male?


Q: I need help, give me some pointers!
R: 0x3A28213A, 0x6339392C, 0x7363684E, ...
PM Quote
Avatar
John (Ex-Member)
Pro


Messaggi: 191
Iscritto: 18/11/2007

Segnala al moderatore
Postato alle 21:13
Martedì, 11/05/2010
diavolo, hai ragione!
scusa, ho fatto confusione riguardo al passaggio di parametri (siamo in C++! Doh!)!
in tal caso, la mia soluzione(che comunque era un aggirare il problema) non può andare bene..


Costruisci come se dovesse durare 1000 anni, vivi come se fosse l'ultimo giorno....

Linux user #510634
PM Quote
Avatar
napco (Normal User)
Pro


Messaggi: 64
Iscritto: 16/04/2010

Segnala al moderatore
Postato alle 8:57
Mercoledì, 12/05/2010
Se si tratta di un esercizio da esame allora dev'esserci sotto qualche trucchetto idiota... Hai provato a creare una classe contenitore con le tue funzioni d'interesse statiche in modo che la classe si comporti come un namespace? Magari è proprio quello che il prof vuole...

In teoria se la funzione è statica non dovrebbe esistere nessun problema nel passarla a GLUT.

Ultima modifica effettuata da napco il 12/05/2010 alle 8:59


So resistere a tutto, tranne che alle tentazioni. - Oscar Wilde
PM Quote
Avatar
munkaka (Member)
Pro


Messaggi: 119
Iscritto: 07/09/2008

Segnala al moderatore
Postato alle 16:05
Giovedì, 13/05/2010
si funziona! grazie, mi sa che avro qualche punto bonus perchè gli altri non hanno trovato questa soluzione,  o usano wxwidget, che è un suicidio a mio parere


Q: I need help, give me some pointers!
R: 0x3A28213A, 0x6339392C, 0x7363684E, ...
PM Quote