tutorial_qt:opengl_01bis
Differenze
Queste sono le differenze tra la revisione selezionata e la versione attuale della pagina.
Entrambe le parti precedenti la revisione Revisione precedente Prossima revisione | Revisione precedente | ||
tutorial_qt:opengl_01bis [2015/01/21 06:29] mickele [Mescoliamo un po' le cose...] |
tutorial_qt:opengl_01bis [2015/05/05 14:43] (versione attuale) mickele |
||
---|---|---|---|
Linea 1: | Linea 1: | ||
- | ====== | + | ====== |
- | Nel primo tutorial | + | Nel [[tutorial_qt: |
===== 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. | + | 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. |
+ | |||
+ | ~~READMORE~~ | ||
In realtà tale distinzione nasce semplicemente da motivi di comodità, perché è comunque possibile inserire una QWindow all' | In realtà tale distinzione nasce semplicemente da motivi di comodità, perché è comunque possibile inserire una QWindow all' | ||
Linea 14: | Linea 16: | ||
container-> | container-> | ||
- | Per approfondire il metodo statico QWidget:: | + | Per approfondire il metodo statico QWidget:: |
+ | |||
+ | Vedremo però che l' | ||
+ | |||
+ | ===== Un esempio applicativo con QOpenGLWidget ===== | ||
+ | |||
+ | Nel file di progetto è necessario attivare il modulo widgets | ||
+ | |||
+ | Qt += widgets | ||
- | Vedremo però che l' | + | Chi viene dalle Qt4 noterà |
- | ===== Sporchiamoci le mani con QOpenGLWidget ===== | + | |
- | Analogamente | + | Per quanto riguarda il codice C++, analogamente |
* initializeGL() | * initializeGL() | ||
* resizeGL() | * resizeGL() | ||
* paintGL() | * paintGL() | ||
- | Partiamo con initializeGL(), | + | Partiamo con initializeGL(), |
void GLWidget:: | void GLWidget:: | ||
Linea 30: | Linea 39: | ||
m_program = new QOpenGLShaderProgram(this); | m_program = new QOpenGLShaderProgram(this); | ||
| | ||
- | // Compiliamo | + | // Compiliamo |
if (!m_program-> | if (!m_program-> | ||
close(); | close(); | ||
Linea 42: | Linea 51: | ||
close(); | close(); | ||
| | ||
- | // Attiviamo alcuni stati | + | // Attiviamo alcuni stati opengl |
glEnable(GL_DEPTH_TEST); | glEnable(GL_DEPTH_TEST); | ||
glEnable(GL_BLEND); | glEnable(GL_BLEND); | ||
Linea 59: | Linea 68: | ||
} | } | ||
- | Ed infine il metodo paintGL(), che si occupa del disegno vero e proprio. | + | Ed infine il metodo paintGL() si occupa del disegno vero e proprio |
void GLWidget:: | void GLWidget:: | ||
Linea 97: | Linea 106: | ||
} | } | ||
- | Se confrontiamo | + | Otterremo così il seguente risultato |
- | ===== Mescoliamo un po' le cose... ===== | + | {{ : |
- | E' possibile disegnare oggetti grafici 2D con QPainter sul nostro Widget. | + | Se confrontiamo il codice appena scritto |
- | In tal caso nel metodo paintGL() | + | ===== Mescoliamo le opengl con QPainter... ===== |
+ | |||
+ | Con QOpenGLWidget, | ||
+ | |||
+ | In tal caso nel metodo paintGL() | ||
QPainter painter; | QPainter painter; | ||
painter.begin(this); | painter.begin(this); | ||
... | ... | ||
- | <comandi disegno QPainter> | + | |
... | ... | ||
painter.beginNativePainting(); | painter.beginNativePainting(); | ||
... | ... | ||
- | <comandi disegno Opengl> | + | |
... | ... | ||
painter.endNativePainting(); | painter.endNativePainting(); | ||
... | ... | ||
- | <comandi disegno QPainter> | + | |
... | ... | ||
painter.end(); | painter.end(); | ||
- | | ||
- | Al di fuori di fuori di tali comandi è possibile utilizzare la classe QPainter come siamo abituati a fare in qualunque QWidget. | ||
+ | {{ : | ||
+ | |||
+ | Nell' | ||
+ | |||
+ | Al link [[http:// | ||
+ | |||
+ | ===== Potrebbero interessarti anche... ===== | ||
+ | Un elenco degli altri articoli disponibili sull' | ||
+ | <blog related> | ||
+ | </ |
tutorial_qt/opengl_01bis.1421818176.txt.gz · Ultima modifica: 2015/01/21 06:29 da mickele