diff options
| author | Rose Hogenson <rosehogenson@posteo.net> | 2024-09-05 22:10:35 -0700 |
|---|---|---|
| committer | Rose Hogenson <rosehogenson@posteo.net> | 2024-09-05 22:10:35 -0700 |
| commit | b7b863cdf008348806d6bcdc5724c6c55b3575fb (patch) | |
| tree | 7c08110fa3379014e8ae29a7009aca0084cf0fc9 | |
| parent | 242a9d026e2f6ef0f820ecff3a2bb669800dc5d0 (diff) | |
| download | pongo-b7b863cdf008348806d6bcdc5724c6c55b3575fb.tar.zst | |
Enable vsync.
| -rw-r--r-- | pongo.go | 23 |
1 files changed, 13 insertions, 10 deletions
@@ -15,8 +15,9 @@ const ( screenWidth = 1920 screenHeight = 1080 - ballSpeed = 5 - paddleSpeed = 5 + ticksPerSecond = 300 + ballSpeed = 10 * 60 / ticksPerSecond + paddleSpeed = 10 * 60 / ticksPerSecond ) // Imagine a digital clock. Do they still make those? @@ -180,11 +181,15 @@ func pong() error { } defer ping.Free() - window, renderer, err := sdl.CreateWindowAndRenderer(screenWidth, screenHeight, sdl.WINDOW_BORDERLESS) + window, err := sdl.CreateWindow("pong", sdl.WINDOWPOS_CENTERED, sdl.WINDOWPOS_CENTERED, screenWidth, screenHeight, sdl.WINDOW_BORDERLESS) if err != nil { return err } defer window.Destroy() + renderer, err := sdl.CreateRenderer(window, -1, sdl.RENDERER_PRESENTVSYNC) + if err != nil { + return err + } defer renderer.Destroy() playerScore := 0 @@ -204,9 +209,7 @@ func pong() error { lastFrameTime := time.Now() accumulator := time.Duration(0) - renderRate := time.NewTicker(time.Second / 60) - defer renderRate.Stop() - for frameStart := range renderRate.C { + for { for event := sdl.PollEvent(); event != nil; event = sdl.PollEvent() { switch t := event.(type) { case *sdl.QuitEvent: @@ -224,11 +227,12 @@ func pong() error { } } - frameTime := frameStart.Sub(lastFrameTime) - lastFrameTime = frameStart + now := time.Now() + frameTime := now.Sub(lastFrameTime) + lastFrameTime = now accumulator += frameTime - const simulationSpeed = time.Second / 120 + const simulationSpeed = time.Second / ticksPerSecond for ; accumulator >= simulationSpeed; accumulator -= simulationSpeed { switch { case (keyPressed(sdl.K_UP) || keyPressed(sdl.K_w)) && paddle1.bounds().Y >= 0: @@ -339,7 +343,6 @@ func pong() error { renderer.Present() } - panic("unreachable") } func main() { |
