aboutsummaryrefslogtreecommitdiff
path: root/engine.scm
diff options
context:
space:
mode:
Diffstat (limited to 'engine.scm')
-rw-r--r--engine.scm12
1 files changed, 12 insertions, 0 deletions
diff --git a/engine.scm b/engine.scm
index 0318616..38ebfed 100644
--- a/engine.scm
+++ b/engine.scm
@@ -99,6 +99,17 @@
(create (state-hook state #:create)))
(when create (create game))))
+;; Set renderer draw color for SDL_RenderClear (called every frame before clear).
+(define (renderer-set-clear-color! renderer scene)
+ (let ((bg (and scene (scene-background scene))))
+ (if (and (list? bg) (>= (length bg) 3))
+ (let ((r (list-ref bg 0))
+ (g (list-ref bg 1))
+ (b (list-ref bg 2))
+ (a (if (>= (length bg) 4) (list-ref bg 3) 255)))
+ (set! (sdl2:render-draw-color renderer) (sdl2:make-color r g b a)))
+ (set! (sdl2:render-draw-color renderer) (sdl2:make-color 0 0 0 255)))))
+
;; ── game-run! ──────────────────────────────────────────────────────────────
;; Main event loop and lifecycle orchestration
@@ -167,6 +178,7 @@
target
(game-width game)
(game-height game)))))))
+ (renderer-set-clear-color! (game-renderer game) (game-scene game))
(sdl2:render-clear! (game-renderer game))
(when (game-scene game)
(render-scene! (game-renderer game) (game-scene game)))