könnte es sein, dass FlipBuffers() beim Warten auf den Bildschirmsync nicht resourcenschonend wartet und die Kontrolle solange abgibt, sonden zu 100% die CPU auslastet ???

Ist natürlich eine nicht besonders schöne Art und Weise ...

Gibt es evtl. irgenwie eine andere Möglichkeit den Sync abzufangen (evtl. über Interrupts oder über 'nen Event)?
Oder gibt es vielleicht eine Möglichkeit die aktuelle Rasterzeile abzufragen?
So könnte man nach dem Zeichnen evtl. einen Delay() einbauen, der kurz vor dem Sync zu ende ist und anschließend einen FlipBuffers(1) machen.
Siehe CPU Belastung mit und ohne Delay() bei gleicher Framerate im Beispiel:
Code: Alles auswählen
InitSprite()
InitKeyboard()
StartTimer = ElapsedMilliseconds()-1
FrameCounter.l = 0
If OpenWindow(1,100,100,320,240,0,"jhg")
If OpenWindowedScreen(WindowID(1),0,0,320, 240, 16,0,0)
StartTimer = ElapsedMilliseconds()-1
Repeat
FrameCounter + 1
StartDrawing(ScreenOutput())
DrawText(" FPS : "+Str(FrameCounter *1000 / (ElapsedMilliseconds() - StartTimer))+" ")
StopDrawing()
;Angenommen mann könnte die aktuelle Rasterzeile auslesen,
;so könnte man die Zeit bis zum nächsten Sync berechnen und durch
;einen entsprechenden Delay() auffüllen, ohne die Framerate zu beeinflussen.
Delay(8) ; ohne Delay() ist die CPU-Belastung durch FlipBuffers() = 100%
FlipBuffers(1)
ExamineKeyboard()
Until KeyboardReleased(#PB_Key_Escape)
EndIf
EndIf
End