当我从文件中导入模型时,它们通常是由多个网格组合而成的。目前,我正在从第一个网格创建一个 VBO,因为我不知道如何与其他网格打交道。
glGenVertexArrays(1, &m_VAO);
glBindVertexArray(m_VAO);
const Mesh & mesh = m_modelAsset->meshes[0];
glGenBuffers(1, &m_VBO[0]);
glBindBuffer(GL_ARRAY_BUFFER, m_VBO[0]);
glBufferData(GL_ARRAY_BUFFER, mesh.vertices.size() * sizeof(Vertex), mesh.vertices.data(), GL_STATIC_DRAW);
glEnableVertexAttribArray(0);
glVertexAttribPointer(0, 3, GL_FLOAT, GL_FALSE, sizeof(Vertex), (void*)offsetof(Vertex, position));
glEnableVertexAttribArray(1);
glVertexAttribPointer(1, 3, GL_FLOAT, GL_FALSE, sizeof(Vertex), (void*)offsetof(Vertex, normal));
glEnableVertexAttribArray(2);
glVertexAttribPointer(2, 4, GL_FLOAT, GL_FALSE, sizeof(Vertex), (void*)offsetof(Vertex, color));
如果我遍历每个网格和gen其他缓冲区,我不知道如何告诉 opengl 它应该如何处理内存glVertexAttribPointer。如果我用相同的索引调用它,它会覆盖以前存储的数据,不是吗?