Problema extraño de OpenGL al factorizar código

Entonces tengo un código que crea un búfer y pone algunos vértices en él:

GLuint vertexbuffer;
glGenBuffers(1, &vertexbuffer);
glBindBuffer(GL_ARRAY_BUFFER, vertexbuffer);
glBufferData(GL_ARRAY_BUFFER, sizeof(g_vertex_buffer_data), g_vertex_buffer_data, GL_STATIC_DRAW);
glVertexAttribPointer(0, 3, GL_FLOAT, GL_FALSE, 0, 0);
glBindBuffer(GL_ARRAY_BUFFER, 0);
glEnableVertexAttribArray(0);

También lo ato a un atributo de sombreador:

glBindAttribLocation(programID, 0, "pos");

Y, finalmente, dibujalo:

glBindBuffer(GL_ARRAY_BUFFER, vertexbuffer);
g,lDrawArrays(GL_TRIANGLES, 0, 3);

Por supuesto, hay otro código, pero todo esto funciona bien (muestra un triángulo rojo en la pantalla)

Sin embargo, en el instante en que trato de factorizar estas cosas en una estructura, no se mostrará nada (este es uno de los métodos):

void loadVerts(GLfloat verts[], int indices)
    {
        GLuint vertexbuffer;
        glGenBuffers(1, &vertexbuffer);
        glBindBuffer(GL_ARRAY_BUFFER, vertexbuffer);
        glBufferData(GL_ARRAY_BUFFER, sizeof(verts), verts, GL_STATIC_DRAW);
        glVertexAttribPointer(indice, indices, GL_FLOAT, GL_FALSE, 0, 0);
        glBindBuffer(GL_ARRAY_BUFFER, 0);
        glEnableVertexAttribArray(indice);
        indice++;
        buffers.push_back(vertexbuffer);
    }

He verificado cuatro veces este código, y también lo he rastreado para asegurarme de que coincida con el código anterior siempre que se llame. Mi llamada de sorteo es casi la misma que mi original:

void draw()
    {
        glBindBuffer(GL_ARRAY_BUFFER, buffers.at(0));
        glDrawArrays(GL_TRIANGLES, 0, 3);
    }

También intenté hacer de esto una clase y agregar / cambiar muchas partes del código.buffers yindice son solo algunos variables para realizar un seguimiento de los buffers y los índices de atributos.buffers es unstd::vector<GLuint> FWIW

Respuestas a la pregunta(1)

Su respuesta a la pregunta