(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)
(define %gl-context #f)
(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! %gl-context (sdl2:make-gl-context %sdl-window))
- (sdl2:set-gl-swap-interval! 'vsync))
+ (when (not %sdl-window)
+ (sdl2:sdl-init)
+ (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))
+ (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)
(sdl2:show-window! %sdl-window))
(define (close-window)
- (sdl2:hide-window! %sdl-window)
- (sdl2:sdl-quit))
+ (sdl2:hide-window! %sdl-window))
+
+(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")