for (int i = 0; i < 100000000; ++i)
{
model = glm::translate(glm::mat4(1.0), glm::vec3(i * 2, i * 2 , i * 2));
glUniformMatrix4fv(modellocation, 1, GL_FALSE, &model[0][0]);
glDrawElements(GL_TRIANGLES, 3, GL_UNSIGNED_INT, (void *)0);
}
вот часть моего кода.
Я хочу нарисовать 100000000 треугольников, но это становится очень медленным.Я знаю, это потому, что я звонил glDrawElements
так много раз.И я также знаю, что мне нужно рисовать больше треугольников за один раз, чтобы не вызывать glDrawElements
слишком много раз.
Но я не понимаю, как это сделать, нужно ли мне менять буфер, который у меня есть, или я могу использовать другой способ сделать это?
вот мой буфер
float vertex[] = {
0.0f, 0.5f, 0.0f,
-0.5f, 0.0f, 0.0f,
0.5f, 0.0f, 0.0f,
};
И мой индексный буфер
unsigned int indices[] = { 0, 1, 2 };
И я привязываю буфер вот так
unsigned int VBO, VAO, EBO;
glGenVertexArrays(1, &VAO);
glGenBuffers(1, &VBO);
glGenBuffers(1, &EBO);
glBindVertexArray(VAO);
glBindBuffer(GL_ARRAY_BUFFER, VBO);
glBufferData(GL_ARRAY_BUFFER, sizeof(vertex), vertex, GL_STATIC_DRAW);
glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, EBO);
glBufferData(GL_ELEMENT_ARRAY_BUFFER, sizeof(indices), indices, GL_STATIC_DRAW);
glVertexAttribPointer(0, 3, GL_FLOAT, GL_FALSE, 3 * sizeof(float), (void *)0);
glEnableVertexAttribArray(0);