Странная проблема OpenGL при выделении кода

Итак, у меня есть код, который создает буфер и помещает в него несколько вершин:

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

Я также связываю его с атрибутом шейдера:

glBindAttribLocation(programID, 0, "pos");

И, наконец, нарисуйте это:

glBindBuffer(GL_ARRAY_BUFFER, vertexbuffer);
glDrawArrays(GL_TRIANGLES, 0, 3);

Конечно, есть другой код, но все это работает нормально (отображает красный треугольник на экране)

Тем не менее, в тот момент, когда я пытаюсь выделить все это в структуре, ничего не отобразится (вот один из методов):

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

Я четыре раза проверил этот код и также проследил, чтобы он соответствовал приведенному выше коду при каждом его вызове. Мой колл-запрос почти такой же, как мой оригинал:

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

Я также попытался сделать это классом и добавить / изменить многие части кода.buffers а такжеindice это всего лишь несколько переменных для отслеживания буферов и индексов атрибутов.buffers являетсяstd::vector<GLuint> FWIW.

Ответы на вопрос(1)

Ваш ответ на вопрос