У меня есть класс частиц и систем частиц. В своей основной программе я создал экземпляр системы частиц и инициализировал в ней частицы. В функции отображения я хотел бы передать положение всех частиц в буфер Vertex одним выстрелом. Но я не уверен в нотации, используемой для доступа ко всем вершинам позиции из.
class particle{
glm::vec3 pos;
glm::vec3 vel;
}
class particleSystem{
std::vector<particle> m_particles;
}
Я пробовал что-то вроде этого:
//Displaying particles starts here
glGenBuffers(1, &particleBuffers);
glBindBuffer(GL_ARRAY_BUFFER, particleBuffers);
glBufferData(GL_ARRAY_BUFFER, sizeof(ps.m_particles[].pos), ps.m_particles[].pos, GL_STATIC_DRAW);
glVertexAttribPointer(position_loc, 3, GL_FLOAT, GL_FALSE, 0, 0);
glDrawArrays(GL_POINTS, 0, (GLsizei)ps.m_particles.size()); //Draw them to screen
glBindBuffer(GL_ARRAY_BUFFER, 0);
//Displaying particles ends here
где ps
— экземпляр класса системы частиц. Нотация, которую я использовал для доступа ко всем позициям частиц в функции glBufferData, не работает. Какие-либо предложения?