Langsames Doublebuffering?
-
Bei einem Versuch mit SDL blitte ich eine primitive Bitmap auf den Bildschirm und lasse sie dabei jeden Frame um 1 Pixel wandern. Dabei fällt auf, das das Bild ungefähr 3 - 4 mal so schnell ist, wenn ich keinen Doublebuffer verwende, sprich: Mir das SDL_Flip(mainsurface); in der Renderingloop spare und die Surface Singlebuffered erstelle. Ist also das Flippen generell so langsam (wird ja in Hardware ausgeführt), liegts an meiner GeForce4, oder steckt der Overhead in SDL?
-
das flippen ist normalerweise (im vollbildmodus und falls nichts anderes eingestellt ist) lediglich ein tauschen der pointer, und das kostet keine zeit bzw. ist so schnell das es egal ist.
-
Ich kenne zwar kein SDL, aber bei Flip musst du insofern aufpassen, wenn VSYNC an ist, also Vertikale Syncronisation. Dh. Der PC wartet solange mit dem Flip, bis der Bildschirm komplett gezeichnet wurde und Flip dann. Wenn man VSYNC ausschaltet dann kann sein das es flimmert.
-
Es word wohl an Vsync liegen. Das ist oft nur im Vollbildmodus an, im Fenstermodus nicht (frag mich nicht wieso). D.h. im Fenstermodus Wird dann so schnell wie möglich gezeichnet, während im Vollbild per Vsync auf den Bilschrim gewartet wird.
Versuch es irgendwo auszuschalten, wenn du sehen willst, wieviele FPS deine Anwendung schafft.
geloescht
-
geloescht schrieb:
Es word wohl an Vsync liegen. Das ist oft nur im Vollbildmodus an, im Fenstermodus nicht (frag mich nicht wieso). D.h. im Fenstermodus Wird dann so schnell wie möglich gezeichnet, während im Vollbild per Vsync auf den Bilschrim gewartet wird.
Versuch es irgendwo auszuschalten, wenn du sehen willst, wieviele FPS deine Anwendung schafft.
geloescht@gelöscht
ja ja der gute alte vsync, als hätten wir uns nicht letzte woche damit schon rumgeschlagen.
-
Ah der VSync daran hatte ich gar nicht gedacht thx. Ich war davon ausgegangen, das flip() eine Funktion ist, die den Befehl absetzt und sofort zurückkehrt.