title: Opengl glGenVertexArrays error
body: <p>I was trying to make 5 vertex array objects(vao) using 1 array for init() function.</p>
  
  <p>However, glGenVertexArrays( 5, &amp;vao ) throws me an error and I don't understand why it does.</p>
  
  <p>I guess I don't fully understand the behavior of the function.</p>
  
  <p>Can anyone tell me what's going on here?</p>
  
  <p>Here is my original code:</p>
  
  <pre><code>void
  init(){
    // Subdivide a tetrahedron into a sphere
    Index = 0; tetrahedron( 1, 0, NumTimesToSubdivide-4 );
    Index = 0; tetrahedron( 0, 1, NumTimesToSubdivide-3 );
    Index = 0; tetrahedron( 0, 2, NumTimesToSubdivide-2 );
    Index = 0; tetrahedron( 0, 3, NumTimesToSubdivide-1);
    Index = 0; tetrahedron( 0, 4, NumTimesToSubdivide );
  
    // Create a vertex array object
    **glGenVertexArrays( 5, &amp;vao ); // Error occurs on this line**
    for ( int i=0; i&lt;5; i++ )
    {
  
      glBindVertexArray( vao[i] ); 
      GLuint buffer;
      glGenBuffers( 1, &amp;buffer );
      glBindBuffer( GL_ARRAY_BUFFER, buffer );
      glBufferData( GL_ARRAY_BUFFER, sizeof(points[i]) + sizeof(normals[i]),NULL, GL_STATIC_DRAW );
      glBufferSubData( GL_ARRAY_BUFFER, 0, sizeof(points[i]), &amp;(points[i]) );
      glBufferSubData( GL_ARRAY_BUFFER, sizeof(points[i]),sizeof(normals[i]), &amp;(normals[i]) );
    }
    // Load shaders and use the resulting shader program
    GLuint program = InitShader( "vshader.glsl", "fshader.glsl" );
    glUseProgram( program );
  
    // set up vertex arrays
    GLuint vPosition = glGetAttribLocation( program, "vPosition" );
    glEnableVertexAttribArray( vPosition );
    glVertexAttribPointer( vPosition, 4, GL_FLOAT, GL_FALSE, 0, BUFFER_OFFSET(0) );
  
    GLuint vNormal = glGetAttribLocation( program, "vNormal" );
    glEnableVertexAttribArray( vNormal );
    glVertexAttribPointer( vNormal, 3, GL_FLOAT, GL_FALSE, 0, BUFFER_OFFSET(sizeof(points)) );
  
    AmbientProduct = glGetUniformLocation(program, "AmbientProduct");
    DiffuseProduct = glGetUniformLocation(program, "DiffuseProduct");
    SpecularProduct = glGetUniformLocation(program, "SpecularProduct");
    LightPosition = glGetUniformLocation(program, "LightPosition");
    Shininess = glGetUniformLocation(program, "Shininess");
    Transformation = glGetUniformLocation( program, "Transformation" );
    View = glGetUniformLocation( program, "View" );
    Projection = glGetUniformLocation( program, "Projection" );
  
    glEnable( GL_DEPTH_TEST );
    glClearColor(0.0, 0.0, 0.0, 0.0 ); /* Black background */
  }
  </code></pre>
  
  <p>Here is the error messages:</p>
  
  <pre><code>error C2664: 'void (GLsizei,GLuint *)' : cannot convert parameter 2 from 'GLuint (*)[5]' to 'GLuint *'
  1&gt;          Types pointed to are unrelated; conversion requires reinterpret_cast, C-style cast or function-style cast
  
  error C2664: 'void (GLsizei,GLuint *)' : cannot convert parameter 1 from 'GLuint (*)[5]' to 'GLsizei'
  1&gt;          There is no context in which this conversion is possible
  </code></pre>