diff options
Diffstat (limited to 'chickadee/graphics/buffer.scm')
-rw-r--r-- | chickadee/graphics/buffer.scm | 22 |
1 files changed, 12 insertions, 10 deletions
diff --git a/chickadee/graphics/buffer.scm b/chickadee/graphics/buffer.scm index 37a77e4..3ce1d76 100644 --- a/chickadee/graphics/buffer.scm +++ b/chickadee/graphics/buffer.scm @@ -47,6 +47,7 @@ buffer-usage buffer-data null-buffer + g:buffer current-buffer map-buffer! unmap-buffer! @@ -85,6 +86,7 @@ vertex-array-attributes vertex-array-mode null-vertex-array + g:vertex-array current-vertex-array render-vertices render-vertices/instanced @@ -153,7 +155,7 @@ #:predicate buffer? #:free free-buffer) -(define-graphics-state buffer +(define-graphics-state g:buffer current-buffer #:default null-buffer #:bind bind-buffer) @@ -207,7 +209,7 @@ never sent to the GPU." (assert-current-graphics-engine) ;; Weird bugs will occur when creating a new vertex buffer while a ;; vertex array is bound. - (with-graphics-state! ((vertex-array null-vertex-array)) + (with-graphics-state! ((g:vertex-array null-vertex-array)) (let ((buffer (%make-buffer (generate-buffer-gl) name length @@ -216,7 +218,7 @@ never sent to the GPU." usage #f))) (graphics-engine-guard! buffer) - (with-graphics-state! ((buffer buffer)) + (with-graphics-state! ((g:buffer buffer)) (gl-buffer-data (buffer-target-gl buffer) length (if data @@ -237,7 +239,7 @@ vertex buffer data back to the GPU." (unless (buffer-mapped? buffer) ;; Don't map a buffer that is already mapped! (let ((target (buffer-target-gl buffer)) (length (buffer-length buffer))) - (with-graphics-state! ((buffer buffer)) + (with-graphics-state! ((g:buffer buffer)) (when (eq? (buffer-usage buffer) 'stream) ;; Orphan the buffer to avoid implicit synchronization. ;; See: https://www.opengl.org/wiki/Buffer_Object_Streaming#Buffer_re-specification @@ -250,7 +252,7 @@ vertex buffer data back to the GPU." (define (unmap-buffer! buffer) "Return the mapped vertex buffer data for BUFFER to the GPU." - (with-graphics-state! ((buffer buffer)) + (with-graphics-state! ((g:buffer buffer)) (gl-unmap-buffer (buffer-target-gl buffer)) (set-buffer-data! buffer #f))) @@ -484,7 +486,7 @@ element is used for 2 instances, and so on." ('double (data-type double)))) (define* (apply-buffer-view buffer-view #:optional attribute-index) - (with-graphics-state! ((buffer (buffer-view->buffer buffer-view))) + (with-graphics-state! ((g:buffer (buffer-view->buffer buffer-view))) ;; If there is no attribute-index, we assume this is being bound for ;; use as an index buffer. (when attribute-index @@ -540,7 +542,7 @@ element is used for 2 instances, and so on." #:predicate vertex-array? #:free free-vertex-array) -(define-graphics-state vertex-array +(define-graphics-state g:vertex-array current-vertex-array #:default null-vertex-array #:bind bind-vertex-array) @@ -568,7 +570,7 @@ argument may be overridden. The following values are supported: attributes mode))) (graphics-engine-guard! array) - (with-graphics-state! ((vertex-array array)) + (with-graphics-state! ((g:vertex-array array)) (for-each (match-lambda ((index . buffer-view) (apply-buffer-view buffer-view index))) @@ -589,7 +591,7 @@ argument may be overridden. The following values are supported: ('triangle-fan (begin-mode triangle-fan)))) (define* (render-vertices array #:key count (offset 0)) - (with-graphics-state! ((vertex-array array)) + (with-graphics-state! ((g:vertex-array array)) (let ((indices (vertex-array-indices array))) (if indices (begin @@ -602,7 +604,7 @@ argument may be overridden. The following values are supported: (gl-draw-arrays (vertex-array-mode-gl array) offset count))))) (define* (render-vertices/instanced array instances #:key count (offset 0)) - (with-graphics-state! ((vertex-array array)) + (with-graphics-state! ((g:vertex-array array)) (let ((indices (vertex-array-indices array))) (if indices (begin |