Производительность Выпуск JOGL - PullRequest
1 голос
/ 23 декабря 2011

Я работаю над 3D-игрой в JOGL с моей проектной группой. мы противостоим проблемам с производительностью. Наша игра работает со скоростью 20 кадров в секунду или меньше.

Мы измерили время исключения функции основного дисплея. Это оказалось 4 миллисекунды, что хорошо. Но когда мы измерили время между двумя вызовами дисплея, оказалось, что это 60 миллисекунд.

Так что вопрос в том. Что происходит между двумя вызовами дисплея в Opengl?

заранее спасибо

Ответы [ 2 ]

6 голосов
/ 13 марта 2014

Если JOGL используется в сочетании с AWT с использованием GLCanvas, то рендеринг блокируется, когда поток обработки событий AWT выполняет ввод и 2D-рендеринг.

Если JOGL используется в сочетании с AWT с использованием GLJPanel, торендеринг блокируется, пока поток обработки событий AWT выполняет ввод, а 2D-рендеринг + дополнительное время затрачивается на копирование данных из графической памяти графического процессора в память процессора Java2D.

Рекомендация JOGL - использовать NEWT GLWindow напрямую.NEWT - это высокопроизводительный набор инструментов для работы с окнами от JOGL.NEWT выполняет ввод параллельно с рендерингом OpenGL.Высокая производительность рендеринга достигается без блокировки входных событий или наоборот.http://jogamp.org/jogl/doc/NEWT-Overview.html

1 голос
/ 23 марта 2014

Я согласен с xranby, но вы не предоставили достаточно информации о вашем проекте.

Если вы вызовите Thread.sleep () не в том месте, это может вызвать проблемы с синхронизацией с графическим процессором и ухудшить вашу производительность.

Если вы оставите режим автопереключения в буфере и бесполезно поменяете местами буферы вручную, это также может ухудшить вашу производительность.

Если вы попытаетесь сделать ваш OpenGL текущим, тогда как в этом нет необходимости, он можетухудшить производительность тоже.

Вы включили v-sync?Вы используете FPSAnimator?

...