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.scm22
1 files changed, 14 insertions, 8 deletions
diff --git a/chickadee/render/framebuffer.scm b/chickadee/render/framebuffer.scm
index a4c98f7..86fc417 100644
--- a/chickadee/render/framebuffer.scm
+++ b/chickadee/render/framebuffer.scm
@@ -28,6 +28,7 @@
#:use-module (system foreign)
#:use-module (gl)
#:use-module (gl enums)
+ #:use-module (chickadee math matrix)
#:use-module (chickadee render gl)
#:use-module (chickadee render gpu)
#:use-module ((chickadee render texture) #:select (make-texture null-texture))
@@ -36,6 +37,7 @@
framebuffer?
framebuffer-texture
framebuffer-viewport
+ framebuffer-projection
null-framebuffer
apply-framebuffer
*framebuffer-state*))
@@ -53,15 +55,16 @@
(u32vector-ref bv 0)))
(define-record-type <framebuffer>
- (%make-framebuffer id renderbuffer-id texture viewport)
+ (%make-framebuffer id renderbuffer-id texture viewport projection)
framebuffer?
(id framebuffer-id)
(renderbuffer-id framebuffer-renderbuffer-id)
(texture framebuffer-texture)
- (viewport framebuffer-viewport))
+ (viewport framebuffer-viewport)
+ (projection framebuffer-projection))
(define null-framebuffer
- (%make-framebuffer 0 0 null-texture null-viewport))
+ (%make-framebuffer 0 0 null-texture null-viewport (make-identity-matrix4)))
(define <<framebuffer>> (class-of null-framebuffer))
@@ -99,15 +102,18 @@ 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.
+ ;; It is convenient to make a default viewport and
+ ;; projection matrix 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))
+ (projection (orthographic-projection 0 width height 0 0 1))
(framebuffer (%make-framebuffer framebuffer-id
renderbuffer-id
texture
- viewport)))
+ viewport
+ projection)))
(gpu-state-set! *framebuffer-state* framebuffer)
;; Setup depth buffer.
(gl-bind-renderbuffer (version-3-0 renderbuffer)