Thread overview
Convert std.container.array to void[] and/or pass to OpenGL functions like glBuffer(Sub)Data
Jun 17, 2015
ParticlePeter
Jun 17, 2015
Alex Parrill
Jun 17, 2015
ParticlePeter
Jun 17, 2015
Marc Schütz
Jun 17, 2015
ParticlePeter
Jun 17, 2015
Kagamin
Jun 17, 2015
ParticlePeter
June 17, 2015
I use wrapper functions taking void[] arrays to forward them comfortably to mentioned OpenGL functions. This works with static and dynamic build in arrays, but I don't see a way how I could access (cast) the raw data of a std.container.array to forward it to these wrapper functions. std.array(Range)(Range r) does a copy which I would like to avoid. Any advice ?
June 17, 2015
On Wednesday, 17 June 2015 at 13:04:28 UTC, ParticlePeter wrote:
> I use wrapper functions taking void[] arrays to forward them comfortably to mentioned OpenGL functions. This works with static and dynamic build in arrays, but I don't see a way how I could access (cast) the raw data of a std.container.array to forward it to these wrapper functions. std.array(Range)(Range r) does a copy which I would like to avoid. Any advice ?

Try slicing it: `array[]`
June 17, 2015
On Wednesday, 17 June 2015 at 13:07:11 UTC, Alex Parrill wrote:
> On Wednesday, 17 June 2015 at 13:04:28 UTC, ParticlePeter wrote:
>> I use wrapper functions taking void[] arrays to forward them comfortably to mentioned OpenGL functions. This works with static and dynamic build in arrays, but I don't see a way how I could access (cast) the raw data of a std.container.array to forward it to these wrapper functions. std.array(Range)(Range r) does a copy which I would like to avoid. Any advice ?
>
> Try slicing it: `array[]`

That gives me a range, which I could convert to an array with std.array(Range)(Range
r) which I want to avoid.
June 17, 2015
On Wednesday, 17 June 2015 at 13:04:28 UTC, ParticlePeter wrote:
> I use wrapper functions taking void[] arrays to forward them comfortably to mentioned OpenGL functions. This works with static and dynamic build in arrays, but I don't see a way how I could access (cast) the raw data of a std.container.array to forward it to these wrapper functions. std.array(Range)(Range r) does a copy which I would like to avoid. Any advice ?

Would this work?

(&arr.front)[0 .. arr.length]
June 17, 2015
On Wednesday, 17 June 2015 at 13:31:21 UTC, Marc Schütz wrote:
> On Wednesday, 17 June 2015 at 13:04:28 UTC, ParticlePeter wrote:
>> I use wrapper functions taking void[] arrays to forward them comfortably to mentioned OpenGL functions. This works with static and dynamic build in arrays, but I don't see a way how I could access (cast) the raw data of a std.container.array to forward it to these wrapper functions. std.array(Range)(Range r) does a copy which I would like to avoid. Any advice ?
>
> Would this work?
>
> (&arr.front)[0 .. arr.length]

Unfortunately not:
Error: Vector!(float, 3) delegate() pure nothrow @property ref @safe cannot be sliced with []

Fyi, its an std.container.array!( gl3n.Vector!(float, 3) ) array.
June 17, 2015
(&arr.front())[0 .. arr.length] ?
June 17, 2015
On Wednesday, 17 June 2015 at 13:58:09 UTC, Kagamin wrote:
> (&arr.front())[0 .. arr.length] ?

Yes, this works, nice, thanks :-)