[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Function set-gl-vertex-array in Guile-opengl
From: |
Daniel Llorens |
Subject: |
Re: Function set-gl-vertex-array in Guile-opengl |
Date: |
Fri, 25 Jan 2019 19:25:51 +0100 |
Hi Luis,
I don't really have an answer to your question, but I wanted to point out that
Guile already has make-f32vector, f32vector-set!, etc. You don't need to define
your own. IMO it's not a good idea to use bytevector-xxx-set!/ref to operate on
typed vectors unless you are type punning.
The make-f32vector, etc. functions are in SRFI-4, they aren't specific to Guile.
PS I didn't understand the purpose of (* n 30) on your code. The original you
link has (* n 4) which is what I'd expect for f32.
Regards
Daniel
> From: Luis Souto Graña <address@hidden>
> Subject: Function set-gl-vertex-array in Guile-opengl
> Date: 25 January 2019 at 11:36:33 CET
> To: address@hidden
>
>
> Hello, I'm trying to use the function set-gl-vertex-array in Guile-opengl .
> It needs a bytevector as an argument. I wrote this doing a copy-paste from
> here: https://github.com/marcomaggi/vicare/blob/master/attic/lab/gears.scm
>
> (use-modules (rnrs bytevectors))
> (use-modules (system foreign))
>
> (define (f32vector . lst)
> (define-syntax f32set!
> (syntax-rules ()
> ((_ bv n value)
> (bytevector-ieee-single-native-set! bv (* n 30) value))))
> (let ((bv (make-bytevector (* (length lst) 30))))
> (let loop ((i 0) (lst lst))
> (cond ((null? lst) bv)
> (else
> (f32set! bv i (car lst))
> (loop (+ i 1) (cdr lst)))))))
>
> (define points (f32vector 30.0 30.0 0.0
> 10.0 10.0 0.0
> 70.0 30.0 0.0
> 90.0 10.0 0.0
> 70.0 70.0 0.0
> 90.0 90.0 0.0
> 30.0 70.0 0.0
> 10.0 90.0 0.0
> 30.0 30.0 0.0
> 10.0 10.0 0.0))
>
>> points
> #vu8(0 0 240 65 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 240
> .....
>
>> (bytevector-length points)
> 900
>
>> (bytevector->pointer points)
> #<pointer 0x56090d909aa0>
>
>
> So, it works well.
>
> Now, if I write:
>
> (use-modules (gl) (glut))
>
>> ,apropos set-gl-vertex-array
> (gl): set-gl-vertex-array #<procedure set-gl-vertex-array (type
> bv-or-pointer #:optional size #:key stride offset)>
>
>
>> (set-gl-vertex-array (bytevector->pointer points) 3)
>
> ERROR: In procedure scm-error:
> unhandled array-pointer type 3
>
> Can someone tell me what the solution is?
>
>
>
> _______________________________________________
> guile-user mailing list
> address@hidden
> https://lists.gnu.org/mailman/listinfo/guile-user
- Function set-gl-vertex-array in Guile-opengl, Luis Souto Graña, 2019/01/25
- Re: Function set-gl-vertex-array in Guile-opengl,
Daniel Llorens <=
- Re: Function set-gl-vertex-array in Guile-opengl, Luis Souto Graña, 2019/01/25
- Re: Function set-gl-vertex-array in Guile-opengl, Daniel Llorens, 2019/01/26
- Re: Function set-gl-vertex-array in Guile-opengl, Daniel Llorens, 2019/01/26
- Re: Function set-gl-vertex-array in Guile-opengl, Luis Souto Graña, 2019/01/26
- Re: Function set-gl-vertex-array in Guile-opengl, Daniel Llorens, 2019/01/26
- Re: Function set-gl-vertex-array in Guile-opengl, Luis Souto Graña, 2019/01/26
- Re: Function set-gl-vertex-array in Guile-opengl, Luis Souto Graña, 2019/01/28
- Re: Function set-gl-vertex-array in Guile-opengl, Luis Souto Graña, 2019/01/31