Problema estranho no OpenGL ao fatorar o código

Então, eu tenho algum código que cria um buffer e coloca alguns vértices nele:

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);

Também o vinculo a um atributo shader:

glBindAttribLocation(programID, 0, "pos");

E, finalmente, desenhe:

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

Obviamente, há outro código, mas tudo isso funciona bem (exibe um triângulo vermelho na tela)

No entanto, no instante em que eu tentar fatorar essas coisas em uma estrutura, nada será exibido (aqui está um dos 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);
    }

Eu verifiquei esse código em quatro vezes e também o rastreio para garantir que ele corresponda ao código acima sempre que for chamado. Minha chamada de empate é quase igual à minha original:

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

Eu também tentei fazer disso uma classe e adicionar / alterar muitas partes do código.buffers eindice são apenas alguns exemplos para acompanhar buffers e índices de atributos.buffers é umstd::vector<GLuint> FWIW.

questionAnswers(1)

yourAnswerToTheQuestion