Ottenere l'accelerazione hardware OpenGL con SDL su Linux


8

Sto cercando di utilizzare SDL + OpenGL ma non credo che l'accelerazione hardware funzioni perché il framerate per circa 18000 polys è di circa 24 fps su una macchina quad core ma è un 1-2fps senza speranza su un Intel Atom. Anche il quad core inizia a lottare quando il conteggio dei poli supera questo valore.

Ho controllato il mio codice ma chiaramente mi manca qualcosa di ovvio. Ho modificato il mio codice di inizializzazione SDL per utilizzare lo stesso codice del test OpenGL SDL . Segnala che SDL_GL_ACCELERATED_VISUAL è 1 ma che hw_available in SDL_VideoInfo è 0

Inoltre, il fornitore viene segnalato correttamente come Nvidia su entrambe le macchine e le app accelerate come Compiz e glxgears funzionano bene.

Qualche idea su cosa provare?

Grazie

Risposte:


6

Se stai usando glBegin () / glEnd () nel tuo codice, specialmente se stai impostando trame e stati in modo ridondante tra i fotogrammi (cioè, disegna con la trama 1, quindi 2, quindi 1, quindi 2, anziché 1,1,2, 2), probabilmente stai sostenendo il sovraccarico del conducente. Questo è particolarmente vero se noti che un processore lento si sta bloccando mentre ha ancora una buona carta. L'uso di glDrawArrays o simili di solito ha prestazioni molto migliori.

Senza un elenco completo di codici, tuttavia, non c'è davvero modo di saperlo con certezza. SDL è un involucro piuttosto sottile, quindi a meno che tu non stia facendo qualcosa di veramente strano non mi aspetto un errore. Inoltre, quali carte vengono utilizzate?


La scheda su questa macchina è una nVidia Corporation GT218 [ION]. Capisco che sarà un po 'lento prima di ottimizzare, ma non così lento. Sto vincolando 1 trama e la sto usando per disegnare un semplice campo in altezza di 1 triangolo alla volta. Quindi un modo piuttosto orribile di fare le cose, ma anche così, più lento del previsto.
Robin Elvin,

1
Ho appena preso le chiamate glBegin () / glEnd () all'esterno del loop e ho modificato la routine di disegno di conseguenza e il framerate è fino a 30 fps. Quindi ho appreso quale effetto drastico hanno quelle chiamate quando vengono usate in modo saggio :) Grazie!
Robin Elvin

Nessun problema. Sono contento di poterti aiutare.
ChrisE

@ChrisE Cosa intendi con "SDL è un wrapper piuttosto sottile"?
Chris
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.