Obteniendo aceleración de hardware OpenGL con SDL en Linux

8

Estoy tratando de usar SDL + OpenGL, pero no creo que la aceleración de hardware esté funcionando porque la velocidad de fotogramas para alrededor de 18000 polys es de aproximadamente 24 fps en una máquina de cuatro núcleos, pero es una desesperada 1-2 fps en un Intel Atom. Incluso el núcleo cuádruple comienza a luchar cuando el recuento de polietileno se eleva por encima de esto.

Revisé mi código pero claramente me falta algo obvio. Cambié mi código de inicialización SDL para usar el mismo código que en la prueba SDL OpenGL . Informa que SDL_GL_ACCELERATED_VISUAL es 1 pero que hw_available en SDL_VideoInfo es 0

Además, el proveedor se informa correctamente como Nvidia en ambas máquinas y las aplicaciones aceleradas como Compiz y glxgears funcionan bien.

¿Alguna idea de qué probar?

Gracias

Robin Elvin
fuente

Respuestas:

6

Si está utilizando glBegin () / glEnd () en su código, especialmente si establece texturas y estados de forma redundante entre cuadros (es decir, dibuje con textura 1, luego 2, luego 1, luego 2, en lugar de 1,1,2, 2), probablemente esté incurriendo en gastos generales del conductor. Especialmente este es el caso si notas que un procesador lento está fallando mientras todavía tiene una buena tarjeta. El uso de glDrawArrays o similar generalmente tiene un rendimiento mucho mejor.

Sin una lista completa de códigos, sin embargo, realmente no hay una manera de saberlo con certeza. SDL es un envoltorio bastante delgado, por lo que a menos que esté haciendo algo realmente extraño, no esperaría un error. Además, ¿qué cartas se están utilizando?

ChrisE
fuente
La tarjeta en esta máquina es una nVidia Corporation GT218 [ION]. Entiendo que va a ser un poco lento antes de optimizar, pero no tan lento. Atasco 1 textura y la uso para dibujar un campo de altura simple, ciertamente, de 1 triángulo a la vez. Es una forma bastante horrible de hacer las cosas, pero aún así, más lento de lo esperado.
Robin Elvin el
1
Solo tomé las llamadas glBegin () / glEnd () fuera del bucle y modifiqué la rutina de dibujo en consecuencia y la velocidad de fotogramas es de hasta 30 fps. Así que he dicho qué efecto tan drástico tienen esas llamadas cuando se usan imprudentemente :) ¡Gracias!
Robin Elvin
No hay problema. Me alegro de poder ayudar.
ChrisE
@ChrisE ¿Qué quieres decir con "SDL es un envoltorio bastante delgado"?
Chris