Opengl glGenVertexArrays error -
i trying make 5 vertex array objects(vao) using 1 array init() function.
however, glgenvertexarrays( 5, &vao ) throws me error , don't understand why does.
i guess don't understand behavior of function.
can tell me what's going on here?
here original code:
void init(){ // subdivide tetrahedron 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 vertex array object **glgenvertexarrays( 5, &vao ); // error occurs on line** ( int i=0; i<5; i++ ) { glbindvertexarray( vao[i] ); gluint buffer; glgenbuffers( 1, &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]), &(points[i]) ); glbuffersubdata( gl_array_buffer, sizeof(points[i]),sizeof(normals[i]), &(normals[i]) ); } // load shaders , use resulting shader program gluint program = initshader( "vshader.glsl", "fshader.glsl" ); gluseprogram( program ); // set 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 */ }
here error messages:
error c2664: 'void (glsizei,gluint *)' : cannot convert parameter 2 'gluint (*)[5]' 'gluint *' 1> types pointed unrelated; conversion requires reinterpret_cast, c-style cast or function-style cast error c2664: 'void (glsizei,gluint *)' : cannot convert parameter 1 'gluint (*)[5]' 'glsizei' 1> there no context in conversion possible
arrays pointers. don't need &
:
glgenvertexarrays( 5, vao );
Comments
Post a Comment