OpenGL - заикание анимации в полноэкранном режиме - PullRequest
1 голос
/ 19 октября 2010

У меня сейчас проблема с анимацией в 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 кадров в секунду?

1 Ответ

1 голос
/ 20 октября 2010

У меня сложилось впечатление, что независимо от размера окна в орфографическом двухмерном чертеже, который масштабируется при изменении размера окна, время рисования всегда будет занимать одинаковое количество времени. Это правильное предположение?

Если только:)

Больше пикселей требует большей пропускной способности памяти / шейдерных блоков / и т.д. Посмотрите на fillrate .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...