From: Daniel Llorens <daniel.llorens@bluewin.ch>
To: guile-user <guile-user@gnu.org>
Cc: luissoutobueu@gmail.com
Subject: Re: Function set-gl-vertex-array in Guile-opengl
Date: Fri, 25 Jan 2019 19:25:51 +0100 [thread overview]
Message-ID: <E9150FAE-7337-4347-8028-C1DB31A83C3B@bluewin.ch> (raw)
In-Reply-To: <mailman.136.1548435627.3559.guile-user@gnu.org>
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 <luissoutobueu@gmail.com>
> Subject: Function set-gl-vertex-array in Guile-opengl
> Date: 25 January 2019 at 11:36:33 CET
> To: guile-user@gnu.org
>
>
> 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
> guile-user@gnu.org
> https://lists.gnu.org/mailman/listinfo/guile-user
next parent reply other threads:[~2019-01-25 18:25 UTC|newest]
Thread overview: 13+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <mailman.136.1548435627.3559.guile-user@gnu.org>
2019-01-25 18:25 ` Daniel Llorens [this message]
2019-01-26 1:33 ` Function set-gl-vertex-array in Guile-opengl Luis Souto Graña
2019-01-26 12:52 ` Daniel Llorens
2019-01-26 12:58 ` Daniel Llorens
2019-01-26 16:05 ` Luis Souto Graña
2019-01-26 15:39 ` Daniel Llorens
2019-01-26 19:00 ` Luis Souto Graña
2019-01-28 13:30 ` Luis Souto Graña
2019-01-31 11:14 ` Luis Souto Graña
2019-02-09 18:59 ` Luis Souto Graña
2019-01-25 10:36 Luis Souto Graña
2019-01-26 10:33 ` Catonano
2019-01-26 16:02 ` Luis Souto Graña
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
List information: https://www.gnu.org/software/guile/
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=E9150FAE-7337-4347-8028-C1DB31A83C3B@bluewin.ch \
--to=daniel.llorens@bluewin.ch \
--cc=guile-user@gnu.org \
--cc=luissoutobueu@gmail.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).