ebiten: Do not skip Draw when vsync is disabled

Closes #1520
This commit is contained in:
Hajime Hoshi 2021-03-01 12:06:07 +09:00
parent 9e73b0d287
commit 7dda2d8e4b

View File

@ -190,13 +190,16 @@ func (c *uiContext) update(updateCount int) error {
uiDriver().ResetForFrame() uiDriver().ResetForFrame()
} }
// Even though updateCount == 0, the offscreen is cleared and Draw is called. // Even though updateCount == 0 and vsync is enabled, the offscreen is cleared and Draw is called.
// Draw should not update the game state and then the screen should not be updated without Update, but // Draw should not update the game state and then the screen should not be updated without Update, but
// users might want to process something at Draw with the time intervals of FPS. // users might want to process something at Draw with the time intervals of FPS.
if IsScreenClearedEveryFrame() { // When vsync is disabled, as performance matters, skip calling Draw when possible (#1520).
c.offscreen.Clear() if updateCount > 0 || IsVsyncEnabled() {
if IsScreenClearedEveryFrame() {
c.offscreen.Clear()
}
c.game.Draw(c.offscreen)
} }
c.game.Draw(c.offscreen)
// This clear is needed for fullscreen mode or some mobile platforms (#622). // This clear is needed for fullscreen mode or some mobile platforms (#622).
c.screen.Clear() c.screen.Clear()