Generic (void *)int
Maurizio Cimadamore
maurizio.cimadamore at oracle.com
Mon Feb 18 14:33:01 UTC 2019
Whohoo!
Looking forward to the feedback - and thanks for the patience!
Maurizio
On 18/02/2019 14:30, Giuseppe Barbieri wrote:
> Uh, sorry, my bad, you are right,
>
> ptr1.set(Vec3.lenght.L)
>
> should have been
>
> ptr1.set(Vec3.size.L)
>
> it works flawless! Thanks you all, guys
>
> I'll write later a list with some feedbacks to smooth the experience for gl devs
>
>
> Il giorno lun 18 feb 2019 alle ore 15:27 Maurizio Cimadamore
> <maurizio.cimadamore at oracle.com
> <mailto:maurizio.cimadamore at oracle.com>> ha scritto:
>
> Uhm - the code snippet for converting long into pointer is correct; I
> checked this on my machine:
>
> class Test {
> public static void main(String[] args) throws Throwable {
> try (Scope sc = Scope.globalScope().fork()) {
> var ptr1 = sc.allocate(NativeTypes.LONG);
> ptr1.set(42L);
> var p1 =
> ptr1.cast(NativeTypes.VOID).cast(NativeTypes.VOID.pointer()).get();
> System.err.println(p1.addr());
> }
> }
> }
>
>
> And this prints 42 as expected.
>
> Are you sure the problem is coming from that pointer, and not from
> somewhere else?
>
> Maurizio
>
> On 18/02/2019 14:16, Giuseppe Barbieri wrote:
> > I just had a chance to try, but that, unfortunately, doesnt seem
> to work..
> >
> https://github.com/elect86/panama/blob/master/src/test/kotlin/hello-triangle.kt#L100-L102
> >
> > I get a black triangle (I shall get a colored one instead)
> >
> > I guess I get at least the vertex positions (the triangle,
> although black,
> > is there) because in my case `semantic.attr.POSITION` is luckily
> zero,
> > which is the same index where the attributes start from.
> >
> > Other ideas?
> >
> > Il giorno lun 18 feb 2019 alle ore 10:56 Jorn Vernee
> <jbvernee at xs4all.nl <mailto:jbvernee at xs4all.nl>>
> > ha scritto:
> >
> >> Hi Giuseppe,
> >>
> >> You should be able to use this trick:
> >>
> >> long pointerValue = 12L; // e.g.
> >> Scope scope = Scope.newNativeScope; // or
> Scope.globalScope().fork()
> >> depending on which version you are
> >> Pointer<Long> ptr = scope.allocate(NativeTypes.UINT64);
> >> ptr.set(pointerValue);
> >> Pointer<?> result =
> >> ptr.cast(NativeTypes.VOID).cast(NativeTypes.VOID.pointer()).get();
> >> // use 'result'
> >>
> >> Be aware that this does do an allocation of a 64 bit int, so
> you might
> >> want to reuse the allocated space if you create a lot of
> pointers from
> >> literals.
> >>
> >> Maybe in the future we can add an API for creating pointers
> from long
> >> literals directly.
> >>
> >> Jorn
> >>
> >> Giuseppe Barbieri schreef op 2019-02-18 10:44:
> >>> Thanks Sundar,
> >>>
> >>> that works flawless for `(void *)0`
> >>>
> >>> But now I also would need a generic solution, for example:
> >>>
> >>> (void *)12
> >>>
> >>> There is a sill opengl call ( glVertexPointer ) requesting
> explicitely
> >>> that: https://stackoverflow.com/a/8283855/1047713
> >>>
> >>> Signature:
> >>>
> >>> void glVertexAttribPointer(int index, int size, int type, byte
> >>> normalized, int stride, Pointer<?> pointer);
> >>>
> >>>
> >>> is there actually a way?
> >>>
> >>>
> >>>
> >>>
> >>>
> >>>
> >>> You can use Pointer.nullPointer() method.
> >>>
> >>> -Sundar
> >>>
> >>> On 18/02/19, 8:09 AM, Giuseppe Barbieri wrote:
> >>>> Hi,
> >>>>
> >>>> I'm looking for a way to convert this:
> >>>>
> >>>> (void*)0
> >>>>
> >>>> in Java.
> >>>>
> >>>> I tried to allocate a pointer and set its value to 0, but it
> didnt
> >>>> work
> >>>>
> >>>> Any ideas, guys?
> >>>>
> >>>> Thanks in advance
>
More information about the panama-dev
mailing list