diff options
Diffstat (limited to 'chickadee/graphics.scm')
-rw-r--r-- | chickadee/graphics.scm | 14 |
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) |