summaryrefslogtreecommitdiff
path: root/sly/render
diff options
context:
space:
mode:
Diffstat (limited to 'sly/render')
-rw-r--r--sly/render/mesh.scm49
1 files changed, 24 insertions, 25 deletions
diff --git a/sly/render/mesh.scm b/sly/render/mesh.scm
index 7f38b29..273019d 100644
--- a/sly/render/mesh.scm
+++ b/sly/render/mesh.scm
@@ -133,33 +133,32 @@
(bv (if index?
(make-u32vector (vector-length vertices))
(make-f32vector (* (vector-length vertices)
- (attribute-size elem)))))
- (setter (if index? u32vector-set! f32vector-set!)))
+ (attribute-size elem))))))
(vector-for-each
(match-lambda*
- ((i (? number? k))
- (setter bv i k))
- ((i ($ <vector2> x y))
- (let ((offset (* i 2)))
- (setter bv offset x)
- (setter bv (1+ offset) y)))
- ((i ($ <vector3> x y z))
- (let ((offset (* i 3)))
- (setter bv offset x)
- (setter bv (1+ offset) y)
- (setter bv (+ offset 2) z)))
- ((i ($ <vector4> x y z w))
- (let ((offset (* i 4)))
- (setter bv offset x)
- (setter bv (1+ offset) y)
- (setter bv (+ offset 2) z)
- (setter bv (+ offset 3) w)))
- ((i (color? c))
- (let ((offset (* i 4)))
- (setter bv offset (color-r c))
- (setter bv (1+ offset) (color-g c))
- (setter bv (+ offset 2) (color-b c))
- (setter bv (+ offset 3) (color-a c)))))
+ ((i (? number? k))
+ (u32vector-set! bv i k))
+ ((i (? vector2? v))
+ (let ((offset (* i 2)))
+ (f32vector-set! bv offset (vector2-x v))
+ (f32vector-set! bv (1+ offset) (vector2-y v))))
+ ((i (? vector3? v))
+ (let ((offset (* i 3)))
+ (f32vector-set! bv offset (vector3-x v))
+ (f32vector-set! bv (1+ offset) (vector3-y v))
+ (f32vector-set! bv (+ offset 2) (vector3-z v))))
+ ((i (? vector4? v))
+ (let ((offset (* i 4)))
+ (f32vector-set! bv offset (vector4-x v))
+ (f32vector-set! bv (1+ offset) (vector4-y v))
+ (f32vector-set! bv (+ offset 2) (vector4-z v))
+ (f32vector-set! bv (+ offset 3) (vector4-w v))))
+ ((i (color? c))
+ (let ((offset (* i 4)))
+ (f32vector-set! bv offset (color-r c))
+ (f32vector-set! bv (1+ offset) (color-g c))
+ (f32vector-set! bv (+ offset 2) (color-b c))
+ (f32vector-set! bv (+ offset 3) (color-a c)))))
vertices)
bv))