I was having a problem interfacing with OpenGL from D, as demonstrated by this program, written once in D, and again in C:

http://gist.github.com/378273

Now the 'gist' of it is, doing things like this (D):

    glBufferData(GL_ARRAY_BUFFER, vertices.sizeof,
                 vertices.ptr, GL_STATIC_DRAW);

    glVertexPointer(2, GL_FLOAT, GLfloat.sizeof * 2, cast(void*)0);

With this data (D):

    const GLfloat[] vertices = [-1.0f, -1.0f, 1.0f, -
                                 1.0f, -1.0f, 1.0f, 1.0f, 1.0f];

and the same data in C:

    const GLfloat vertices[] = {-1.0f, -1.0f, 1.0f,
                                -1.0f, -1.0f, 1.0f, 1.0f, 1.0f};


I was getting nothing but a blank screen. I'm sure you smart folks know what comes next.

     GLfloat[] vertices = {1.0f, 1.0f};  // vertices is a dynamic array.

     GLfloat[2] vertices = {1.0f, 1.0f};  // vertices is a static array.

The second version enables the program to work as the C one does.


My question is, why doesn't passing the `GLfloat[] vertex ...` declaration work? I've looked through the docs, and can't see anything too obvious.


Thanks.

Reply via email to