summaryrefslogtreecommitdiff
path: root/chickadee/render/framebuffer.scm
diff options
context:
space:
mode:
Diffstat (limited to 'chickadee/render/framebuffer.scm')
-rw-r--r--chickadee/render/framebuffer.scm17
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)