У меня сейчас проблема с анимацией в OpenGL.У меня от 200 до 10000 шестеренок на экране одновременно вращающихся.Когда окно не в развернутом виде, мой процессор работает примерно на 10-20% последовательно.Никаких всплесков, никаких заиканий в анимации, она работает идеально плавно, независимо от количества передач на экране.Когда я максимизирую окно, все разваливается.Мой ЦП максимально загружен, я начинаю испытывать странные всплески использования ЦП, в результате анимация начинает заикаться, и это выглядит просто ужасно, даже когда на экране всего 200 передач.
Моя техника анимации выглядит следующим образомэто:
While Animating
Calculate current rotation angle based on a running timer
draw Image
call glFlush()
End While
Если это поможет, я использую фреймворк Дао в VB.net.Я не выполняю никаких других вычислений, кроме тех, которые рассчитывают угол поворота, упомянутый выше, и выполняю несколько glRotateD и glscaleD в методе для рисования изображения.
Кроме того, я думаю, у меня сложилось впечатлениечто независимо от размера окна в ортографическом 2-мерном чертеже, который масштабируется при изменении размера окна, время рисования всегда будет занимать одинаковое количество времени.Это правильное предположение?
Любая помощь очень ценится =)
Редактировать
Обратите внимание, что я видел, как анимация работала совершенно гладко на весь экран, прежде чем,Время от времени OpenGL решает, что он доволен и отлично работает на полном экране, используя от 10 до 20% процессорного времени (то же самое, что и при максимальном использовании).Я не указал точно, что вызывает это, потому что он будет работать один раз идеально, затем, не меняя ничего, я запусту его снова и столкнусь с изменчивостью.Я просто хочу точно определить, что заставляет анимацию замедляться и устранять ее.
Я запустил точечную трассировку в моей программе, и она говорит, что метод swapBuffers использует 55% моего времени обработки, хотя я никогда не вызываю этот метод явно.Этот метод вызывается чем-то еще, что я могу устранить, или это просто метод «мертвого времени» OpenGL для ограничения анимации до 60 кадров в секунду?