summaryrefslogtreecommitdiff
path: root/chickadee/render/buffer.scm
diff options
context:
space:
mode:
Diffstat (limited to 'chickadee/render/buffer.scm')
-rw-r--r--chickadee/render/buffer.scm28
1 files changed, 10 insertions, 18 deletions
diff --git a/chickadee/render/buffer.scm b/chickadee/render/buffer.scm
index 3361ba2..c38e1fc 100644
--- a/chickadee/render/buffer.scm
+++ b/chickadee/render/buffer.scm
@@ -50,7 +50,6 @@
map-buffer!
unmap-buffer!
with-mapped-buffer
- *buffer-state*
make-buffer-view
make-streaming-buffer-view
buffer-view?
@@ -76,7 +75,6 @@
vertex-array-attributes
vertex-array-mode
null-vertex-array
- *vertex-array-state*
render-vertices
render-vertices/instanced))
@@ -121,9 +119,6 @@
(gl-bind-buffer (buffer-target-gl buffer)
(buffer-id buffer)))
-(define *buffer-state*
- (make-gpu-state apply-buffer null-buffer))
-
(define (generate-buffer-gl)
(let ((bv (u32vector 1)))
(gl-gen-buffers 1 (bytevector->pointer bv))
@@ -172,7 +167,7 @@ NAME is simply an arbitrary string for debugging purposes that is
never sent to the GPU."
;; Weird bugs will occur when creating a new vertex buffer while a
;; vertex array is bound.
- (gpu-state-set! *vertex-array-state* null-vertex-array)
+ (set-gpu-vertex-array! (current-gpu) null-vertex-array)
(let ((buffer (gpu-guard
(%make-buffer (generate-buffer-gl)
name
@@ -181,14 +176,14 @@ never sent to the GPU."
target
usage
#f))))
- (gpu-state-set! *buffer-state* buffer)
+ (set-gpu-vertex-buffer! (current-gpu) buffer)
(gl-buffer-data (buffer-target-gl buffer)
length
(if data
(bytevector->pointer data offset)
%null-pointer)
(buffer-usage-gl buffer))
- (gpu-state-set! *buffer-state* null-buffer)
+ (set-gpu-vertex-buffer! (current-gpu) null-buffer)
buffer))
(define* (make-streaming-buffer length #:key
@@ -210,7 +205,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)))
- (gpu-state-set! *buffer-state* buffer)
+ (set-gpu-vertex-buffer! (current-gpu) 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
@@ -223,7 +218,7 @@ vertex buffer data back to the GPU."
(define (unmap-buffer! buffer)
"Return the mapped vertex buffer data for BUFFER to the GPU."
- (gpu-state-set! *buffer-state* buffer)
+ (set-gpu-vertex-buffer! (current-gpu) buffer)
(gl-unmap-buffer (buffer-target-gl buffer))
(set-buffer-data! buffer #f))
@@ -404,7 +399,7 @@ which attributes advance when rendering multiple instances."
(with-mapped-buffer (buffer-view->buffer buffer-view) body ...))
(define* (apply-buffer-view buffer-view #:optional attribute-index)
- (gpu-state-set! *buffer-state* (buffer-view->buffer buffer-view))
+ (set-gpu-vertex-buffer! (current-gpu) (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
@@ -547,9 +542,6 @@ which attributes advance when rendering multiple instances."
(define (apply-vertex-array va)
(gl-bind-vertex-array (vertex-array-id va)))
-(define *vertex-array-state*
- (make-gpu-state apply-vertex-array null-vertex-array))
-
(define* (make-vertex-array #:key indices attributes (mode 'triangles))
"Return a new vertex array using the index data within the typed
buffer INDICES and the vertex attribute data within ATTRIBUTES, an
@@ -572,13 +564,13 @@ argument may be overridden. The following values are supported:
indices
attributes
mode))))
- (gpu-state-set! *vertex-array-state* array)
+ (set-gpu-vertex-array! (current-gpu) array)
(for-each (match-lambda
((index . buffer-view)
(apply-buffer-view buffer-view index)))
attributes)
(apply-buffer-view indices)
- (gpu-state-set! *vertex-array-state* null-vertex-array)
+ (set-gpu-vertex-array! (current-gpu) null-vertex-array)
array))
(define (vertex-array-mode-gl array)
@@ -592,7 +584,7 @@ argument may be overridden. The following values are supported:
('triangle-fan (begin-mode triangle-fan))))
(define* (render-vertices array #:optional count)
- (gpu-state-set! *vertex-array-state* array)
+ (set-gpu-vertex-array! (current-gpu) array)
(let ((indices (vertex-array-indices array)))
(gl-draw-elements (vertex-array-mode-gl array)
(or count
@@ -601,7 +593,7 @@ argument may be overridden. The following values are supported:
%null-pointer)))
(define* (render-vertices/instanced array instances #:optional count)
- (gpu-state-set! *vertex-array-state* array)
+ (set-gpu-vertex-array! (current-gpu) array)
(let ((indices (vertex-array-indices array)))
(gl-draw-elements-instanced (vertex-array-mode-gl array)
(or count