diff options
Diffstat (limited to 'chickadee/render.scm')
-rw-r--r-- | chickadee/render.scm | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/chickadee/render.scm b/chickadee/render.scm index efb5004..9588a95 100644 --- a/chickadee/render.scm +++ b/chickadee/render.scm @@ -26,16 +26,19 @@ #:use-module (chickadee math matrix) #:use-module (chickadee render gpu) #:use-module (chickadee render blend) + #:use-module (chickadee render framebuffer) #:use-module (chickadee render shader) #:use-module (chickadee render texture) #:use-module (chickadee render vertex-buffer) #:use-module (chickadee render viewport) #:export (current-viewport + current-framebuffer current-blend-mode current-depth-test current-texture current-projection with-viewport + with-framebuffer with-blend-mode with-depth-test with-texture @@ -44,6 +47,7 @@ gpu-apply*)) (define *current-viewport* null-viewport) +(define *current-framebuffer* null-framebuffer) (define *current-blend-mode* 'replace) (define *current-depth-test* #f) (define *current-texture* null-texture) @@ -52,6 +56,9 @@ (define (current-viewport) *current-viewport*) +(define (current-framebuffer) + *current-framebuffer*) + (define (current-blend-mode) *current-blend-mode*) @@ -74,6 +81,9 @@ (define-syntax-rule (with-viewport viewport body ...) (with (*current-viewport* viewport) body ...)) +(define-syntax-rule (with-framebuffer framebuffer body ...) + (with (*current-framebuffer* framebuffer) body ...)) + (define-syntax-rule (with-blend-mode blend-mode body ...) (with (*current-blend-mode* blend-mode) body ...)) @@ -133,6 +143,10 @@ (define-syntax-rule (gpu-apply* shader vertex-array count . uniforms) (begin + ;; It's important that the framebuffer is set before setting the + ;; viewport because applying a new viewport will clear the current + ;; framebuffer. + (gpu-state-set! *framebuffer-state* (current-framebuffer)) (gpu-state-set! *viewport-state* (current-viewport)) (gpu-state-set! *blend-mode-state* (current-blend-mode)) (gpu-state-set! *depth-test-state* (current-depth-test)) |