Strumenti Utente



qt_windows_e_i_driver_opengl_intel

Qt, Windows e i driver OpenGL Intel

Le Qt 5.4 hanno introdotto alcune novità nelle modalità di accesso alle funzioni avanzate delle GPU. Il 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 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 comando configure. Analizziamo prima le opzioni già presenti per passare poi alle novità.

Con

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.0.

Usando invece il comando

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 leggermente meno performante, ma meno problemi in caso di driver opengl carenti.

Con le Qt 5.4 è stata aggiunta l'opzione dynamic. Usando

configure -opengl dynamic

le Qt determineranno runtime le librerie con cui interfacciarsi, con il seguente ordine di priorità:

  1. prima verrà provata la libreria opengl32 che verrà attivata solo se disponibili le funzioni OpenGL 2.0; si tratta dell'opzione desktop vista prima
  2. se il passo precedente ha esito negativo, si prova la libreria ANGLE
  3. 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

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 i 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 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 nostro eseguibile autonomamente si interfacci alle librerie angle, nel codice della funzione main() aggiungiamo il metodo

QCoreApplication::setAttribute(Qt::AA_UseOpenGLES);

Comments


qt_windows_e_i_driver_opengl_intel.txt · Ultima modifica: 2015/04/24 13:06 da mickele

Facebook Twitter Google+ Digg Reddit LinkedIn StumbleUpon Email