Domanda

Sto scrivendo un programma in OpenGL e ho bisogno di un qualche tipo di interfaccia barra degli strumenti. Le mie prime reazioni sono state di utilizzare un'interfaccia grafica, poi ulteriori indagini in C ++ mi sono reso conto che la GUI dipendono dal sistema operativo che si sta utilizzando (io sono su Windows). Pertanto, ho deciso di utilizzare QT per aiutarmi.

La mia domanda è se sto prendendo l'approccio migliore / appropriato per questa soluzione. Sono io anche in grado di scrivere il mio programma OpenGL e hanno la GUI voglio creare l'interfaccia con il codice C ++ di fare quello che voglio fare.

Ad esempio, se creo un semplice "pannello di controllo" con le frecce in ogni direzione. E sullo schermo Ho un oggetto di dialogo creato da sovrabbondanza posso interfacciare le frecce di essere cliccato su e interagire con il programma openGL per spostare la casella?

È stato utile?

Soluzione

Utilizzando Qt è coerente per il vostro problema: fornisce una buona integrazione di OpenGL attraverso il modulo QtOpenGL

.
  1. derivare tuoi classi di visualizzazione da QGLWidget (fino al Qt 4.8) o da QOpenGLWidget (dal Qt 5.4) ed applicare metodi virtuali paintGL() etc.
  2. si avrà accesso al sistema di segnale e lo slot del Qt in modo che si sarà in grado di catturare gli eventi Gui e aggiornare la visualizzazione OpenGL.

Altri suggerimenti

È possibile utilizzare i widget regolari non-OpenGL Qt sulla cima di una QGLWidget in modo da ciò che si descrive è fattibile.

Una cosa mi sono imbattuto durante questa operazione è che i widget regolari dovevano essere opaco. Il momento in cui erano trasparenti in alcun modo c'era ogni sorta di immondizia sotto di loro. Quello era un tempo fa quindi forse gli ultimi indirizzi versione questo problema. Potrebbe essere stato troppo specifico per la piattaforma in modo YMMV.

Soggiorno in GLUT. Non c'è bisogno di aggiungere Qt per un pannello di controllo. Si potrebbe aprire una finestra secondaria (o seconda finestra, a seconda di quale funziona meglio per la vostra progettazione del programma), e disegnare i controlli in quella finestra, e utilizzare GLUT per gestire l'interazione del mouse.

Inoltre, Qt e GLUT ogni hanno i loro cicli di eventi. Per utilizzare solo ciclo di eventi di Qt, che avrebbe dovuto abbandonare gran parte della struttura GLUT, dal momento che il ciclo degli eventi GLUT non sarebbe stato lì per chiamare le funzioni di callback. Qt ha la funzionalità di avere lasciato qualcun altro ciclo di eventi chiamare il codice di elaborazione eventi di Qt, ma non credo che ci sia un modo semplice per fare GLUT mano fuori le informazioni sull'evento.

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