tutorial_qt:opengl_01
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 Prossima revisione Entrambe le parti successive la revisione | ||
tutorial_qt:opengl_01 [2013/09/15 17:29] mickele |
tutorial_qt:opengl_01 [2015/02/10 07:21] mickele |
||
---|---|---|---|
Linea 1: | Linea 1: | ||
- | ~~NEWSFEED~~ | + | ====== |
- | ====== | + | |
- | < | + | |
- | Con la nuova release delle [[http:// | + | Con la nuova release delle [[http:// |
+ | |||
+ | In questo articolo accenneremo | ||
===== Il perché di tanti cambiamenti ===== | ===== Il perché di tanti cambiamenti ===== | ||
- | I motivi di quello che sembrerebbe un restyling in realtà sono molto più profondi. Con le Qt5 si è cercato di utilizzare maggiormente la GPU per renderizzare la grafica delle interfacce. Per fare questo molte funzionalità che prima erano all' | + | Chi di voi proviene dalla versione 4 delle Qt noterà molti cambiamenti nell' |
Con l' | Con l' | ||
~~READMORE~~ | ~~READMORE~~ | ||
- | </ | ||
===== QGLWidget vs QWindow ===== | ===== QGLWidget vs QWindow ===== | ||
Linea 24: | Linea 23: | ||
Una prima differenza è che QGLWidget deriva da QWidget, QWindow no, non avremo quindi a disposizione alcuni dei comodi strumenti presenti in QWidget. | Una prima differenza è che QGLWidget deriva da QWidget, QWindow no, non avremo quindi a disposizione alcuni dei comodi strumenti presenti in QWidget. | ||
- | Un' | + | Un' |
===== Partiamo da QWindow... ===== | ===== Partiamo da QWindow... ===== | ||
Linea 30: | Linea 29: | ||
Iniziamo con un esempio concreto, creando una classe derivata di QWindow nella quale vogliamo disegnare un triangolo. | Iniziamo con un esempio concreto, creando una classe derivata di QWindow nella quale vogliamo disegnare un triangolo. | ||
- | Creiamo la classe GLWindow che estende QWindow e [[http:// | + | Creiamo la classe GLWindow che estende QWindow e [[http:// |
Avremo un file header glwindow.h che conterrà | Avremo un file header glwindow.h che conterrà | ||
Linea 59: | Linea 58: | ||
}; | }; | ||
- | Abbiamo introdotto alcuni | + | Abbiamo introdotto alcuni |
Il costruttore di GLWindow si limita ad inizializzare un attributo e a dire alle Qt che intendiamo disegnare sulla superficie con le opengl. | Il costruttore di GLWindow si limita ad inizializzare un attributo e a dire alle Qt che intendiamo disegnare sulla superficie con le opengl. | ||
Linea 85: | Linea 84: | ||
void GLWindow:: | void GLWindow:: | ||
- | glViewport(0, | + | |
+ | | ||
| | ||
if (isExposed()) | if (isExposed()) | ||
Linea 91: | Linea 91: | ||
} | } | ||
- | ===== ... e aggiungiamo un po' | + | ===== Gli shader ===== |
+ | |||
+ | Alla base della programmazione opengl moderna ci sono gli [[http://it.wikipedia.org/ | ||
+ | |||
+ | Le prime versioni dello standard opengl prevedevano pipeline grafiche fisse: i calcoli eseguiti dalla scheda grafica erano di una tipologia ben specifica. A partire dalle Opengl 2.0 le operazioni compiute dalla GPU sono divenute personalizzabili: | ||
+ | |||
+ | Nella versione 5 delle Qt creiamo gli shader usando la classe [[http:// | ||
+ | |||
+ | ===== Opengl | ||
I metodi che vedremo ora, sia come denominazione che come struttura che come compiti, sono il risultato di una scelta personale e come tali possono essere modificati. Perciò, acquisita un po' di dimestichezza con le opengl, modificateli pure! | I metodi che vedremo ora, sia come denominazione che come struttura che come compiti, sono il risultato di una scelta personale e come tali possono essere modificati. Perciò, acquisita un po' di dimestichezza con le opengl, modificateli pure! | ||
Linea 242: | Linea 250: | ||
{{ : | {{ : | ||
- | Tutti i file necessari sono contenuati | + | Tutti i file necessari sono contenuti |
Linea 249: | Linea 257: | ||
Nel prossimo articolo approfondiremo i comandi opengl sui quali in questo primo articolo non ci siamo molto soffermati. Vedremo quindi con maggior dettaglio cosa fanno i metodi setUniformValue(), | Nel prossimo articolo approfondiremo i comandi opengl sui quali in questo primo articolo non ci siamo molto soffermati. Vedremo quindi con maggior dettaglio cosa fanno i metodi setUniformValue(), | ||
- | ===== Per approfondire | + | ===== Per approfondire ===== |
+ | |||
+ | ==== opengl | ||
* [[http:// | * [[http:// | ||
- | * [[http:// | + | * [[http:// |
* [[http:// | * [[http:// | ||
+ | * [[http:// | ||
+ | |||
+ | ==== Qt e opengl ==== | ||
+ | |||
* [[http:// | * [[http:// | ||
+ | * [[http:// | ||
+ | |||
tutorial_qt/opengl_01.txt · Ultima modifica: 2015/05/05 14:43 da mickele