X-Git-Url: https://git.jsancho.org/?p=gacela.git;a=blobdiff_plain;f=gacela%2Fgame.scm;h=326db782c7651c0bd80cd71524d75db467e7b78b;hp=fe5f0b3a1cfdc993d413ee9371f29c02b04a7fc0;hb=8f33c32a7b23d245493f0879d181ab6661d64a2d;hpb=5f298cad7dceabfa1a8f41bf71ae17b9554c0443 diff --git a/gacela/game.scm b/gacela/game.scm index fe5f0b3..326db78 100644 --- a/gacela/game.scm +++ b/gacela/game.scm @@ -56,8 +56,7 @@ instead of becoming completely unresponsive and possibly crashing." (define (draw dt alpha) "Render a frame." (let ((size (sdl2:window-size %sdl-window))) - (gl-viewport 0 0 (car size) (cadr size))) - (gl-clear (clear-buffer-mask color-buffer depth-buffer)) + (resize-window (car size) (cadr size))) (if %root-scene (%root-scene)) ;;(run-hook draw-hook dt alpha) @@ -139,14 +138,22 @@ milliseconds of the last iteration of the game loop." (define (init-window) (sdl2:sdl-init) - (set! %sdl-window (sdl2:make-window #:opengl? #t #:show? #t)) - (set! %sdl-renderer (sdl2:make-renderer %sdl-window)) (sdl2:set-gl-attribute! 'context-major-version 3) (sdl2:set-gl-attribute! 'context-minor-version 2) (sdl2:set-gl-attribute! 'double-buffer 1) (sdl2:set-gl-attribute! 'depth-size 24) + (set! %sdl-window (sdl2:make-window #:opengl? #t #:show? #t)) + (set! %sdl-renderer (sdl2:make-renderer %sdl-window)) (set! %gl-context (sdl2:make-gl-context %sdl-window)) - (sdl2:set-gl-swap-interval! 'vsync)) + (sdl2:set-gl-swap-interval! 'vsync) + (init-gl)) + +(define (init-gl) + (set-gl-matrix-mode (matrix-mode projection)) + (gl-load-identity) + (set-gl-matrix-mode (matrix-mode modelview)) + (gl-load-identity) + (set-gl-clear-color 0 0 0 1)) (define (open-window title resolution fullscreen?) (sdl2:set-window-title! %sdl-window title) @@ -158,6 +165,17 @@ milliseconds of the last iteration of the game loop." (sdl2:hide-window! %sdl-window) (sdl2:sdl-quit)) +(define (resize-window width height) + (gl-viewport 0 0 width height) + (set-gl-matrix-mode (matrix-mode projection)) + (gl-load-identity) + (let ((w (/ width 2)) + (h (/ height 2))) + (gl-ortho (- w) w (- h) h 0 1)) + (set-gl-matrix-mode (matrix-mode modelview)) + (gl-clear (clear-buffer-mask color-buffer depth-buffer)) + (gl-load-identity)) + (define* (start-game scene #:key (title "Untitled") (resolution '(640 480))