Entrambe le parti precedenti la revisione
Revisione precedente
Prossima revisione
|
Revisione precedente
|
tutorial_qt:opengl_02_vbo_qopenglbuffer [2015/01/27 07:22] mickele |
tutorial_qt:opengl_02_vbo_qopenglbuffer [2015/05/05 14:42] (versione attuale) mickele |
====== Qt e OpenGL: i Vertex Buffer Object e la classe QOpenGLBuffer ====== | ====== Qt e OpenGL - Vertex Buffer Object con la classe QOpenGLBuffer ====== |
| |
Abbiamo visto nei precedenti articoli come accedere ala funzionalità di OpenGL derivando le classi [[tutorial_qt:opengl_01|QWindow]] e [[tutorial_qt:opengl_01bis|QOpenGLWidget]]. | Abbiamo visto nei precedenti articoli come accedere ala funzionalità di OpenGL derivando le classi [[tutorial_qt:opengl_01|QWindow]] e [[tutorial_qt:opengl_01bis|QOpenGLWidget]]. |
Qualora siate interessati ad approfondire i comandi appena visti vi rimando al tutorial di Wikibooks disponibile all'indirizzo [[http://en.wikibooks.org/wiki/OpenGL_Programming/Modern_OpenGL_Tutorial_02|en.wikibooks.org/wiki/OpenGL_Programming/Modern_OpenGL_Tutorial_02]]. | Qualora siate interessati ad approfondire i comandi appena visti vi rimando al tutorial di Wikibooks disponibile all'indirizzo [[http://en.wikibooks.org/wiki/OpenGL_Programming/Modern_OpenGL_Tutorial_02|en.wikibooks.org/wiki/OpenGL_Programming/Modern_OpenGL_Tutorial_02]]. |
| |
===== I VBO alla Qt-way: la classe QOpenGLBuffer ===== | ===== I VBO secondo la Qt-way: la classe QOpenGLBuffer ===== |
| |
Adesso analizziamo l'utilizzo dei VBO con le librerie Qt. Ci serviremo della classe [[http://doc.qt.io/qt-5/qopenglbuffer.html|QOpenGLBuffer]]. | Adesso analizziamo l'utilizzo dei VBO con le librerie Qt. Ci serviremo della classe [[http://doc.qt.io/qt-5/qopenglbuffer.html|QOpenGLBuffer]]. |
m_vertexVBO->create(); | m_vertexVBO->create(); |
| |
Col metodo setUsagePattern possiamo definire la tipologia di dati che stiamo trasmettendo, ad esempio se si tratti di dati costanti o che cambieranno, di modo da ottimizzare l'impiego delle risorse di sistema. Nel nostro caso abbiamo a che fare con valori, useremo perciò | Col metodo setUsagePattern definiamo quante volte i dati in questione verranno letti e reimpostati nel coso del prgramma, di modo da ottimizzare l'impiego delle risorse di sistema. Nel nostro caso abbiamo a che fare con valori che verranno impostati una volta ma letti molte volte; useremo perciò |
| |
m_vertexVBO->setUsagePattern( QOpenGLBuffer::StaticDraw ); | m_vertexVBO->setUsagePattern( QOpenGLBuffer::StaticDraw ); |
glDrawArrays(GL_TRIANGLES, 0, 3); | glDrawArrays(GL_TRIANGLES, 0, 3); |
| |
| Al link [[http://ingegnerialibera.altervista.org/blog-file/opengltut02-02.zip|ingegnerialibera.altervista.org/blog-file/opengltut02-02.zip]] troverete il codice finale con tutte le modifiche fin qui viste. |
| |
Al link [[http://ingegnerialibera.altervista.org/blog-file/opengltut02-02.zip|ingegnerialibera.altervista.org/blog-file/opengltut02-02.zip]] troverete il codice funzoinante con tutte le modifiche fin qui viste. | Se confrontiamo i due diversi approcci (quello generale con l'impiego delle API OpenGL e quello specifico delle librerie Qt) notiamo che il principale vantaggio della classe QOpenGLBuffer non sia tanto nella riduzione del codice, quanto nella sua maggior leggibilità. |
| |
Se confrontiamo i due diversi approcci (quello generale con l'impiego diretto delle API OpenGL e quello specifico delle librerie Qt) notiamo che il principale vantaggio della classe QOpenGLBuffer non sia tanto nella riduzione del codice, quanto nella sua maggior leggibilità. | |
| |
===== Facciamo girare il triangolo! ===== | ===== Facciamo girare il triangolo! ===== |
Nel codice disponibile all'indirizzo [[http://ingegnerialibera.altervista.org/blog-file/opengltut02-03.zip|ingegnerialibera.altervista.org/blog-file/opengltut02-03.zip]] troverete che la rotazione si interrompe o riprende al click del mouse sulla finestra. Lascio a voi l'analisi di questa piccola variante sul tema. | Nel codice disponibile all'indirizzo [[http://ingegnerialibera.altervista.org/blog-file/opengltut02-03.zip|ingegnerialibera.altervista.org/blog-file/opengltut02-03.zip]] troverete che la rotazione si interrompe o riprende al click del mouse sulla finestra. Lascio a voi l'analisi di questa piccola variante sul tema. |
| |
===== Post correlati ===== | ===== Potrebbero interessarti anche... ===== |
| |
* [[tutorial_qt:opengl_01|Qt e Opengl: Introduzione]] | Un elenco degli altri articoli disponibili sull'argomento: |
* [[tutorial_qt:opengl_01bis|Qt e Opengl: Intro alla classe QOpenGLWidget]] | <blog related> |
| </blog> |
| |