unofficial mirror of guile-user@gnu.org 
 help / color / mirror / Atom feed
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



       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).