У меня есть контейнер объектов:Как анимировать через контейнер для windows.draw()?
std::vector<sf::Drawable> gameObjects;
Моя цель состоит в перебирать эти объекты и сделать их:
for (auto it : gameObjects)
{
window.draw(*it);
}
Вы можете предположить, эти методы уже реализованы. Что я подразумеваю под «анимацией»: я хочу, чтобы эти объекты рисовались по одному, а не сразу сразу.
void Run::render()
{
window.clear(colorWindow);
for (auto it : gameObjects)
{
window.draw(*it);
}
window.display();
}
То есть, каждый рендер() нарисовывает дополнительный объект в контейнере. Вы знаете, как я могу это сделать? Заранее спасибо.
редактировать: Я пытался что-то нетрадиционное - я не думаю, что это хорошая практика, но это работает:
int count = 0;
int countReset = 1;
...
while (countReset > count)
{
objects.at(count++).draw(window);
}
countReset++;
count = 0;
Это будет оживлять быстрее, тем быстрее мой процессор/графический процессор может отображать ... на современных процессорах, это будет просто дикое мерцание. – nvoigt
@nvoigt Вам нужно измерить прошедшее время с момента последнего вызова Run :: render. Только приращение 'actObjInx', если достигнут порог времени. В данный момент я приведу вам пример. – Rabbid76