Converting (casting?) a dynamic array to a fixed array?
    WhatMeWorry via Digitalmars-d-learn 
    digitalmars-d-learn at puremagic.com
       
    Sun May  3 19:47:23 PDT 2015
    
    
  
This following code works fine. A triangle is displayed.
         GLfloat[6] verts = [  0.0,  1.0,
                              -1.0, -1.0,
                               1.0, -1.0 ];
         glGenBuffers(1, &vbo);
         glBindBuffer(GL_ARRAY_BUFFER, vbo);  //   Some of the 
types are:
         glBufferData(GL_ARRAY_BUFFER, verts.sizeof, &verts, 
GL_STATIC_DRAW);
Then, all I do is take out the 6 so that the static array becomes 
a dynamic one. It compiles fine.
          GLfloat[] verts = [  0.0,  1.0,
                              -1.0, -1.0,
                               1.0, -1.0 ];
However, when I run it, the triangle disappears.
According to OpenGL, glBufferData shows:  void glBufferData( 
ignore, GLsizeiptr size, const GLvoid * data, ignore);
So I thought the best solution would be to simply cast the 
dynamic array to a pointer?
So I tried:
glBufferData(GL_ARRAY_BUFFER, verts.sizeof, cast(const GLvoid *) 
&verts, GL_STATIC_DRAW);
and
glBufferData(GL_ARRAY_BUFFER, verts.sizeof, cast(const GLvoid *) 
verts, GL_STATIC_DRAW);
and
glBufferData(GL_ARRAY_BUFFER, verts.sizeof, verts.ptr, 
GL_STATIC_DRAW);
and
glBufferData(GL_ARRAY_BUFFER, verts.sizeof, cast(const GLvoid *) 
verts.ptr, GL_STATIC_DRAW);
and
nothing but more blank screens.
Any ideas?  Thanks.
    
    
More information about the Digitalmars-d-learn
mailing list