mirror of
https://github.com/hajimehoshi/ebiten.git
synced 2024-12-26 03:38:55 +01:00
ui: Make FPS more stable (#203)
This commit is contained in:
parent
884719264e
commit
e608837943
10
run.go
10
run.go
@ -199,9 +199,16 @@ func Run(f func(*Image) error, width, height, scale int, title string) error {
|
|||||||
currentRunContext.setRunningSlowly(false)
|
currentRunContext.setRunningSlowly(false)
|
||||||
beforeForUpdate = now
|
beforeForUpdate = now
|
||||||
} else {
|
} else {
|
||||||
|
// Note that generally t is a little more than 1/60[sec].
|
||||||
t := now - beforeForUpdate
|
t := now - beforeForUpdate
|
||||||
currentRunContext.setRunningSlowly(t*FPS >= int64(time.Second*5/2))
|
currentRunContext.setRunningSlowly(t*FPS >= int64(time.Second*5/2))
|
||||||
tt := int(t * FPS / int64(time.Second))
|
tt := int(t * FPS / int64(time.Second))
|
||||||
|
// As t is not accurate 1/60[sec], errors are accumulated
|
||||||
|
// (generally, errors are positive values).
|
||||||
|
// To make the FPS stable, set tt 1 if t is a little less than 1/60[sec].
|
||||||
|
if tt == 0 && (int64(time.Second)/FPS-int64(10*time.Millisecond)) < t {
|
||||||
|
tt = 1
|
||||||
|
}
|
||||||
for i := 0; i < tt; i++ {
|
for i := 0; i < tt; i++ {
|
||||||
if err := ui.CurrentUI().DoEvents(); err != nil {
|
if err := ui.CurrentUI().DoEvents(); err != nil {
|
||||||
return err
|
return err
|
||||||
@ -214,7 +221,8 @@ func Run(f func(*Image) error, width, height, scale int, title string) error {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
ui.CurrentUI().SwapBuffers()
|
ui.CurrentUI().SwapBuffers()
|
||||||
beforeForUpdate += int64(tt) * int64(time.Second) / FPS
|
d := int64(tt) * int64(time.Second) / FPS
|
||||||
|
beforeForUpdate += d
|
||||||
frames++
|
frames++
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user