Strumenti Utente



tutorial_qt:opengl_01bis

Differenze

Queste sono le differenze tra la revisione selezionata e la versione attuale della pagina.

Link a questa pagina di confronto

Entrambe le parti precedenti la revisione Revisione precedente
Prossima revisione
Revisione precedente
tutorial_qt:opengl_01bis [2015/01/22 17:03]
mickele
tutorial_qt:opengl_01bis [2015/05/05 14:43] (versione attuale)
mickele
Linea 1: Linea 1:
-====== Qt5 Opengl: Intro alla classe QOpenGLWidget ======+====== Qt OpenGL - Intro alla classe QOpenGLWidget ======
  
-Nel [[tutorial_qt:opengl_01|primo articolo su Qt5 e le Opengl]] abbiamo cominciato a vedere come utilizzare la nuova infrastruttura Opengl introdotta nelle Qt5 derivando dalla classe QWindow. Abbiamo anche evidenziato che la classe QGLWidget già presente nelle Qt4, benché ancora presente in Qt5, è stata dichiarata obsoleta, senza che ne venisse fornito un vero e proprio sostituto. Questo è stato vero fino alla versione 5.4 con cui finalmente la vecchia QGLWidget è stata aggiornata alla nuova infrastruttura, diventando QOpenGLWidget.+Nel [[tutorial_qt:opengl_01|precedente articolo su Qt5 e le Opengl]] abbiamo cominciato a vedere come utilizzare la nuova infrastruttura Opengl introdotta nelle Qt5 derivando dalla classe QWindow. Abbiamo anche evidenziato che la classe QGLWidget già presente nelle Qt4, benché ancora presente in Qt5, è stata dichiarata obsoleta, senza che ne venisse fornito un vero e proprio sostituto. Questo è stato vero fino alla versione 5.4 con cui finalmente la vecchia QGLWidget è stata aggiornata alla nuova infrastruttura, diventando QOpenGLWidget.
  
 ===== Quando usare QWindow e quando QOpenGLWidget ===== ===== Quando usare QWindow e quando QOpenGLWidget =====
  
 QOpenGLWidget deriva da QWidget, quindi se abbiamo realizzato la nostra interfaccia usando oggetti derivati da QWidget, ci sarà più comodo usare QOpenGLWidget che potrà essere inserito direttamente nel layout come qualsiasi altro QWidget. Se invece non abbiamo bisogno di QWidget, ad esempio perché stiamo lavorando con QtQuick, allora preferiremo QWindow. QOpenGLWidget deriva da QWidget, quindi se abbiamo realizzato la nostra interfaccia usando oggetti derivati da QWidget, ci sarà più comodo usare QOpenGLWidget che potrà essere inserito direttamente nel layout come qualsiasi altro QWidget. Se invece non abbiamo bisogno di QWidget, ad esempio perché stiamo lavorando con QtQuick, allora preferiremo QWindow.
 +
 +~~READMORE~~
  
 In realtà tale distinzione nasce semplicemente da motivi di comodità, perché è comunque possibile inserire una QWindow all'interno di un QWidget, utilizzando il metodo QWidget::createWindowContainer(), scrivendo qualcosa del tipo In realtà tale distinzione nasce semplicemente da motivi di comodità, perché è comunque possibile inserire una QWindow all'interno di un QWidget, utilizzando il metodo QWidget::createWindowContainer(), scrivendo qualcosa del tipo
Linea 103: Linea 105:
       m_program->release();       m_program->release();
   }   }
 +
 +Otterremo così il seguente risultato
 +
 +{{ :tutorial_qt:opengltut01bis-01.png | Il risultato del codice riportato nel paragrafo}}
  
 Se confrontiamo il codice appena scritto con [[[[tutorial_qt:opengl_01||quello necessario con la classe QWindow]] notiamo una decisa semplificazione, che nasce principalmente dalla maggiore specializzazione della classe QOpenGLWidget. Se confrontiamo il codice appena scritto con [[[[tutorial_qt:opengl_01||quello necessario con la classe QWindow]] notiamo una decisa semplificazione, che nasce principalmente dalla maggiore specializzazione della classe QOpenGLWidget.
Linea 126: Linea 132:
   ...   ...
   painter.end();   painter.end();
-  + 
 +{{ :tutorial_qt:opengltut01bis-02.png |Un esempio di cosa si può fare mescolando comandi opengl alla classe QPainter}} 
 + 
 +Nell'usare tale tecnica bisgona tener conto di un dettaglio: ogni volta che creiamo QPainter, viene reimpostato il contesto opengl. Questo vuol dire che eventuali stati che sono stati impostati nel metodo initializeGL() vengono resettati. 
 Al link [[http://ingegnerialibera.altervista.org/blog-file/opengltut01bis.zip|ingegnerialibera.altervista.org/blog-file/opengltut01bis.zip]] trovate un progetto riassuntivo di quanto visto nell'articolo. Al link [[http://ingegnerialibera.altervista.org/blog-file/opengltut01bis.zip|ingegnerialibera.altervista.org/blog-file/opengltut01bis.zip]] trovate un progetto riassuntivo di quanto visto nell'articolo.
  
 +===== Potrebbero interessarti anche... =====
 +
 +Un elenco degli altri articoli disponibili sull'argomento:
 +<blog related>
 +</blog>

tutorial_qt/opengl_01bis.1421942592.txt.gz · Ultima modifica: 2015/01/22 17:03 da mickele

Facebook Twitter Google+ Digg Reddit LinkedIn StumbleUpon Email