Many thanks. Just to recap, I got the code working with:
glBufferData(GL_ARRAY_BUFFER, (verts.sizeof * verts.length),
verts.ptr, GL_STATIC_DRAW);
sizeof on a slice doesn't do what you think it does, it returns
the size of the actual slice object I believe.
I have to admit that I didn't understand the above sentence until
I did the following. Since this is a learning forum, I'll post
all the details for other learners.
GLfloat[6] staticVerts = [ 0.0, 1.0,
-1.0, -1.0,
1.0, -1.0 ];
GLfloat[] dynamicVerts = [ 0.0, 1.0,
-1.0, -1.0,
1.0, -1.0 ];
staticVerts.length (num elements) = 6
staticVerts.sizeof (num bytes) = 24
before glBufferData
Press any key to continue . . .
dynamicVerts.length (num elements) = 6
dynamicVerts.sizeof (num bytes) = 8
before glBufferData
Press any key to continue . . .
I see on the site under Array Properties
Static array properties are:
.sizeof Returns the array length multiplied by the number of
bytes per array element.
Dynamic array properties are:
.sizeof Returns the size of the dynamic array reference, which is
8 in 32-bit builds and 16 on 64-bit builds.
So that was my mistake. But just for arguments sake, wouldn't it
have been better to define in dynamic array properties a
.sizeofref and a .sizeof (which behaves like the static
array.sizeof)?