If you have a std::vector<T> v
, you may obtain a T*
pointing to the start of the contiguous data (which is what OpenGL is after) with the expression &v[0]
.
In your case, this means passing a Vertex*
to glBufferData
:
glBufferData(
GL_ARRAY_BUFFER,
vertices.size() * sizeof(Vertex),
&vertices[0],
GL_STATIC_DRAW
);
Or like this, which is the same:
glBufferData(
GL_ARRAY_BUFFER,
vertices.size() * sizeof(Vertex),
&vertices.front(),
GL_STATIC_DRAW
);
You can rely on implicit conversion from Vertex*
to void const*
here; that should not pose a problem.