Wouldn't it be better to pass a pointer to a color array (glm::vec3 or vec4 or color[0]) rather than the explicit color values, so that the color pointer could be passed directly to glColor3fv() ?