Теперь необходимо сделать так, чтобы появляющиеся круги двигались строго вверх по y от нуля и их радиус зависел от это координаты. Т.е. например в координаты y=200 радиус круга был наибольшим.
По достижению этого радиуса круг исчезал.
Подскажите, как это сделать ?
Да ладно, Immediate mode до сих пор пользуется популярностью, потому что даёт результат быстро и просто. А запечённый в дисплей листы не уступает VBO по производительности.
У вас же итак функция отрисовки окружности может рендерить их в произвольных координатах, так что достаточно двигать их в первом таймере и там же удалять:
for(vector::iterator i=circ.begin(); i!=circ.end(); i++) {
i->r++; // Увеличивается радиус
i->alpha/=1.05; // Уменьшается прозрачность
i->y += 10; // Двигаем вверх по y (может придётся поменять на - , если будут двигаться не в ту сторону)
if (i->y >= 200) {
i = circ.erase(i);
}
}