summaryrefslogtreecommitdiff
path: root/chickadee/graphics.scm
diff options
context:
space:
mode:
Diffstat (limited to 'chickadee/graphics.scm')
-rw-r--r--chickadee/graphics.scm14
1 files changed, 13 insertions, 1 deletions
diff --git a/chickadee/graphics.scm b/chickadee/graphics.scm
index 4cc21a4..bfa1139 100644
--- a/chickadee/graphics.scm
+++ b/chickadee/graphics.scm
@@ -38,6 +38,7 @@
current-stencil-test
current-texture
current-projection
+ current-multisample
with-viewport
with-framebuffer
with-blend-mode
@@ -45,6 +46,7 @@
with-stencil-test
with-texture
with-projection
+ with-multisample
clear-screen
gpu-apply
gpu-apply*
@@ -53,7 +55,7 @@
(define-record-type <render-context>
(make-render-context viewport framebuffer blend-mode depth-test
- stencil-test projection textures)
+ stencil-test projection multisample? textures)
render-context?
(viewport render-context-viewport set-render-context-viewport!)
(framebuffer render-context-framebuffer set-render-context-framebuffer!)
@@ -61,6 +63,7 @@
(depth-test render-context-depth-test set-render-context-depth-test!)
(stencil-test render-context-stencil-test set-render-context-stencil-test!)
(projection render-context-projection set-render-context-projection!)
+ (multisample? render-context-multisample? set-render-context-multisample!)
(textures render-context-textures))
(define render-context
@@ -70,6 +73,7 @@
#f
#f
(make-identity-matrix4)
+ #f
(make-vector 32 null-texture)))
(define (current-viewport)
@@ -93,6 +97,9 @@
(define (current-projection)
(render-context-projection render-context))
+(define (current-multisample)
+ (render-context-multisample? render-context))
+
(define-syntax-rule (with (getter setter value) body ...)
(let ((prev (getter render-context)))
(setter render-context value)
@@ -143,6 +150,10 @@
(with (render-context-projection set-render-context-projection! matrix)
body ...))
+(define-syntax-rule (with-multisample multisample? body ...)
+ (with (render-context-multisample? set-render-context-multisample! multisample?)
+ body ...))
+
(define (keyword->string kw)
(symbol->string (keyword->symbol kw)))
@@ -167,6 +178,7 @@
(set-gpu-blend-mode! gpu (current-blend-mode))
(set-gpu-depth-test! gpu (current-depth-test))
(set-gpu-stencil-test! gpu (current-stencil-test))
+ (set-gpu-multisample! gpu (current-multisample))
(set-gpu-shader! gpu shader)
(let loop ((i 0))
(when (< i 32)