From 093e07a69add1c351ba757ec4a4dc006f81b3ac2 Mon Sep 17 00:00:00 2001 From: David Thompson Date: Thu, 6 Sep 2018 09:27:46 -0400 Subject: render: buffer: Fixed default typed buffer length calculation. * chickadee/render/buffer.scm (num-elements): New procedure. (make-typed-buffer): Default 'length' to the correct value in elements, not bytes, when a custom length is not specified. --- chickadee/render/buffer.scm | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/chickadee/render/buffer.scm b/chickadee/render/buffer.scm index 4363d22..9726698 100644 --- a/chickadee/render/buffer.scm +++ b/chickadee/render/buffer.scm @@ -242,14 +242,25 @@ vertex buffer data back to the GPU." (* (type-size (typed-buffer-type typed-buffer)) (component-type-size (typed-buffer-component-type typed-buffer))))) +(define (num-elements byte-length byte-offset type component-type) + (inexact->exact + (floor + (/ (- byte-length byte-offset) + (* (component-type-size component-type) + (type-size type)))))) + + (define* (make-typed-buffer #:key (name "anonymous") buffer - (offset 0) + type component-type normalized? - (length (buffer-length buffer)) - type + (offset 0) + (length (num-elements (buffer-length buffer) + offset + type + component-type)) max min sparse) -- cgit v1.2.3