Странная проблема 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.