Strumenti Utente



qt_windows_e_i_driver_opengl_intel

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
qt_windows_e_i_driver_opengl_intel [2015/04/13 23:19]
mickele
qt_windows_e_i_driver_opengl_intel [2015/04/24 13:06] (versione attuale)
mickele
Linea 1: Linea 1:
-====== Qt, Windows e i driver OpenGL della Intel ======+====== Qt, Windows e i driver OpenGL Intel ======
  
-Analizziamo il nuovo metodo con cui le librerie Qt si interfacciano con le funzioni OpenGL in ambiente WindowsA seguire vediamo cosa fare se qualcosa va storto.+Le Qt 5.4 hanno introdotto alcune novità nelle modalità di accesso alle funzioni avanzate delle GPUIl nuovo meccanismo, che permette di valutare al momento dell'esecuzione come accedere alle librerie grafiche, non sempre però risponde alle attese. E' perciò necessario intervenire manualmente per "indirizzare" le Qt alla scelta migliore.
  
-===== Caricamento dinamico interfaccia OpenGL =====+===== Caricamento dinamico OpenGL =====
  
-Fino alle Qt 5.4, su piattaforma Windows la scelta di come interfacciare le librerie Qt con le librerie OpenGL poteva avvenire solo in fase di compilazione delle Qt, con l'opzione -opengl del compando configure.+Fino alle Qt 5.4, su piattaforma Windows la scelta di come interfacciare le librerie Qt con le librerie OpenGL poteva avvenire solo in fase di compilazione delle Qt, con l'opzione -opengl del comando configure. Analizziamo prima le opzioni già presenti per passare poi alle novità.
  
 ~~READMORE~~ ~~READMORE~~
Linea 11: Linea 11:
 Con Con
  
-  configure -opengl desktop+  configure.exe -opengl desktop
  
-le librerie si interfacciano direttamente con l'implementazione opengl dei driver della scheda grafica. Affinché tutto vada a buon fine è necessario però che siano disponibili le funzioni opengl nella versione 2.1.+le librerie si interfacciano direttamente con l'implementazione opengl dei driver della scheda grafica. Affinché tutto vada a buon fine è necessario però che siano disponibili le funzioni opengl nella versione 2.0.
  
 Usando invece il comando Usando invece il comando
  
-  configure -opengl es2+  configure.exe -opengl es2
  
-le librerie si interfacciano con le librerie angle che a loro volta fanno da ponte tra comandi opengl e comandi direct3d. Abbiamo in questo caso un sistema meno performante, ma meno problemi in caso di driver opengl carenti.+le librerie si interfacciano con le librerie angle che a loro volta fanno da ponte tra comandi opengl e comandi direct3d. Abbiamo in questo caso un sistema leggermente meno performante, ma meno problemi in caso di driver opengl carenti.
  
 Con le Qt 5.4 è stata aggiunta l'opzione dynamic. Usando Con le Qt 5.4 è stata aggiunta l'opzione dynamic. Usando
Linea 27: Linea 27:
 le Qt determineranno runtime le librerie con cui interfacciarsi, con il seguente ordine di priorità: le Qt determineranno runtime le librerie con cui interfacciarsi, con il seguente ordine di priorità:
  
-  - prima verrà provata la libreria opengl32 verificando la disponibilità di funzioni OpenGL 2.0 +  - prima verrà provata la libreria opengl32 che verrà attivata solo se disponibili le funzioni OpenGL 2.0; si tratta dell'opzione desktop vista prima 
-  - se il passo precedente ha esito negativo, si provano la libreria ANGLE +  - se il passo precedente ha esito negativo, si prova la libreria ANGLE 
-  - infine, se tutto è andato storto, sarà usata libreria opengl32sw.+  - infine, se tutto è andato storto, sarà usata libreria opengl32sw, un implementazione software delle opengl, decisamente carente dal punto di vista delle prestazioni.
  
 ===== In caso di problemi ===== ===== In caso di problemi =====
  
-Con Windows 7  ed alcuni driver della intel ho riscontrato alcuni problemi nella procedura. In particolare mi riferisco a driver compatibili con opengl 2.0, ma non con opengl2.1. In tal caso veniva attivata la libreria opengl32, facendo funzionare tutto tranne le funzioni del modulo opengl e il modulo QtQuick 2, carenze non da poco. +Con Windows 7  ed alcuni driver della intel ho riscontrato alcuni problemi nella procedura. In particolare mi riferisco a driver compatibili con opengl 2.0, ma non con opengl 2.1. In tal caso viee attivata la libreria opengl32, facendo funzionare tutto tranne modulo opengl e modulo QtQuick 2, carenze non da poco. 
  
-In tal caso è necessario forzare le Qt ad attivare la piattaforma ANGLE, che rende disponibile opengl 2.1. Per farlo è sufficiente impostare la variabile di ambiente QT_OPENGL ad angle. Procediamo quindi con Start -> tasto destro del mouse su Computer -> Proprietà -> Impostazioni di sistema avanzate -> Variabili d'ambiente e definiamo una nuova variabile QT_OPENGL il cui valore sarà angle.+In tal caso è necessario forzare le Qt ad attivare la piattaforma ANGLE, che rende disponibile opengl 2.1 e garantisce il pieno supporto ai due moduli. Per farlo è sufficiente impostare la variabile di ambiente QT_OPENGL ad angle. Procediamo quindi con Start -> tasto destro del mouse su Computer -> Proprietà -> Impostazioni di sistema avanzate -> Variabili d'ambiente e definiamo una nuova variabile QT_OPENGL il cui valore sarà angle. Possiamo scegliere se definrla tra le variabili del singolo utente o tra quelle di sistema (nel qual caso funzioneranno per tutti gli utenti).
  
-In alternativa, se vogliamo che il programma autonomamente si interfacci alle librerie angle, nel codice della funzione main() aggiungiamo il metodo+In alternativa, se vogliamo che il nostro eseguibile autonomamente si interfacci alle librerie angle, nel codice della funzione main() aggiungiamo il metodo
  
-  QCoreApplication::setAttribute(Qt::AA_UseOpenGLES)+  QCoreApplication::setAttribute(Qt::AA_UseOpenGLES);
  

qt_windows_e_i_driver_opengl_intel.1428959997.txt.gz · Ultima modifica: 2015/04/13 23:19 (modifica esterna)

Facebook Twitter Google+ Digg Reddit LinkedIn StumbleUpon Email