diff options
Diffstat (limited to 'chickadee/render/framebuffer.scm')
-rw-r--r-- | chickadee/render/framebuffer.scm | 17 |
1 files changed, 13 insertions, 4 deletions
diff --git a/chickadee/render/framebuffer.scm b/chickadee/render/framebuffer.scm index 39e4bfa..f96d6ba 100644 --- a/chickadee/render/framebuffer.scm +++ b/chickadee/render/framebuffer.scm @@ -31,9 +31,11 @@ #:use-module (chickadee render gl) #:use-module (chickadee render gpu) #:use-module ((chickadee render texture) #:select (make-texture null-texture)) + #:use-module (chickadee render viewport) #:export (make-framebuffer framebuffer? framebuffer-texture + framebuffer-viewport null-framebuffer apply-framebuffer *framebuffer-state*)) @@ -51,14 +53,15 @@ (u32vector-ref bv 0))) (define-record-type <framebuffer> - (%make-framebuffer id renderbuffer-id texture) + (%make-framebuffer id renderbuffer-id texture viewport) framebuffer? (id framebuffer-id) (renderbuffer-id framebuffer-renderbuffer-id) - (texture framebuffer-texture)) + (texture framebuffer-texture) + (viewport framebuffer-viewport)) (define null-framebuffer - (%make-framebuffer 0 0 null-texture)) + (%make-framebuffer 0 0 null-texture null-viewport)) (define <<framebuffer>> (class-of null-framebuffer)) @@ -95,9 +98,15 @@ dimensions WIDTH x HEIGHT." #:mag-filter mag-filter #:wrap-s wrap-s #:wrap-t wrap-t)) + ;; It is convenient to make a default viewport for the + ;; framebuffer so that the rendering engine can set it + ;; whenever it changes to this framebuffer, saving users + ;; the trouble of having to this tedious task themselves. + (viewport (make-viewport 0 0 width height)) (framebuffer (%make-framebuffer framebuffer-id renderbuffer-id - texture))) + texture + viewport))) (gpu-state-set! *framebuffer-state* framebuffer) ;; Setup depth buffer. (gl-bind-renderbuffer (version-3-0 renderbuffer) |