diff options
-rw-r--r-- | chickadee/graphics/buffer.scm | 103 |
1 files changed, 0 insertions, 103 deletions
diff --git a/chickadee/graphics/buffer.scm b/chickadee/graphics/buffer.scm index 62c9c18..66609a2 100644 --- a/chickadee/graphics/buffer.scm +++ b/chickadee/graphics/buffer.scm @@ -71,7 +71,6 @@ make-streaming-buffer-view buffer-view? buffer-view->buffer - buffer-view->vector buffer-view-name buffer-view-offset buffer-view-component-type @@ -83,9 +82,6 @@ buffer-view-sparse buffer-view-data buffer-view-divisor - map-buffer-view! - unmap-buffer-view! - with-mapped-buffer-view make-vertex-array apply-vertex-array @@ -420,7 +416,6 @@ resized." (* (component-type-size component-type) (type-size type)))))) - (define* (make-buffer-view #:key (name "anonymous") buffer @@ -528,15 +523,6 @@ which attributes advance when rendering multiple instances." ('float (data-type float)) ('double (data-type double)))) -(define (map-buffer-view! buffer-view) - (map-buffer! (buffer-view->buffer buffer-view))) - -(define (unmap-buffer-view! buffer-view) - (unmap-buffer! (buffer-view->buffer buffer-view))) - -(define-syntax-rule (with-mapped-buffer-view buffer-view body ...) - (with-mapped-buffer (buffer-view->buffer buffer-view) body ...)) - (define* (apply-buffer-view buffer-view #:optional attribute-index) (set-gpu-vertex-buffer! (current-gpu) (buffer-view->buffer buffer-view)) ;; If there is no attribute-index, we assume this is being bound for @@ -553,95 +539,6 @@ which attributes advance when rendering multiple instances." (when divisor (gl-vertex-attrib-divisor attribute-index divisor))))) -;; TODO: Handle 4-byte alignment rule for the types that need it. -(define (buffer-view->vector buffer-view) - (define (component-parser type) - (match type - ('byte bytevector-s8-ref) - ('unsigned-byte bytevector-u8-ref) - ('short - (lambda (bv i) - (bytevector-s16-ref bv i (native-endianness)))) - ('unsigned-short - (lambda (bv i) - (bytevector-u16-ref bv i (native-endianness)))) - ('unsigned-int - (lambda (bv i) - (bytevector-u32-ref bv i (native-endianness)))) - ('float bytevector-ieee-single-native-ref))) - (define (element-parser type component-type) - (let ((parse-component (component-parser component-type)) - (component-type-size (component-type-size component-type))) - (match type - ('scalar parse-component) - ('vec2 - (lambda (bv i) - (vec2 (parse-component bv i) - (parse-component bv (+ i component-type-size))))) - ('vec3 - (lambda (bv i) - (vec3 (parse-component bv i) - (parse-component bv (+ i component-type-size)) - (parse-component bv (+ i (* component-type-size 2)))))) - ;; TODO: Use a proper vec4 type when it exists. - ('vec4 - (lambda (bv i) - (vector (parse-component bv i) - (parse-component bv (+ i component-type-size)) - (parse-component bv (+ i (* component-type-size 2))) - (parse-component bv (+ i (* component-type-size 3)))))) - ;; TODO: Use proper matrix2 type when it exists. - ('mat2 - (lambda (bv i) - (vector (vector (parse-component bv i) - (parse-component bv (+ i component-type-size))) - (vector (parse-component bv (+ i (* component-type-size 2))) - (parse-component bv (+ i (* component-type-size 3))))))) - ;; TODO: Use proper matrix3 type when it exists. - ('mat3 - (lambda (bv i) - (vector (vector (parse-component bv i) - (parse-component bv (+ i component-type-size)) - (parse-component bv (+ i (* component-type-size 2)))) - (vector (parse-component bv (+ i (* component-type-size 3))) - (parse-component bv (+ i (* component-type-size 4))) - (parse-component bv (+ i (* component-type-size 5))))))) - ('mat4 - (lambda (bv i) - (make-matrix4 (parse-component bv i) - (parse-component bv (+ i component-type-size)) - (parse-component bv (+ i (* component-type-size 2))) - (parse-component bv (+ i (* component-type-size 3))) - (parse-component bv (+ i (* component-type-size 4))) - (parse-component bv (+ i (* component-type-size 5))) - (parse-component bv (+ i (* component-type-size 6))) - (parse-component bv (+ i (* component-type-size 7))) - (parse-component bv (+ i (* component-type-size 8))) - (parse-component bv (+ i (* component-type-size 9))) - (parse-component bv (+ i (* component-type-size 10))) - (parse-component bv (+ i (* component-type-size 11))) - (parse-component bv (+ i (* component-type-size 12))) - (parse-component bv (+ i (* component-type-size 13))) - (parse-component bv (+ i (* component-type-size 14))) - (parse-component bv (+ i (* component-type-size 15))))))))) - (with-mapped-buffer-view buffer-view - (let* ((data (buffer-view-data buffer-view)) - (length (buffer-view-length buffer-view)) - (offset (buffer-view-offset buffer-view)) - (stride (buffer-view-stride buffer-view)) - (type (buffer-view-type buffer-view)) - (component-type (buffer-view-component-type buffer-view)) - (type-byte-size (* (type-size type) - (component-type-size component-type))) - (v (make-vector length)) - (parse-element (element-parser type component-type))) - (let loop ((i 0)) - (when (< i length) - (let ((byte-index (+ (* i stride) offset))) - (vector-set! v i (parse-element data byte-index))) - (loop (+ i 1)))) - v))) - ;;; ;;; Vertex Arrays |