Как оптимизировать мое приложение JOGL? - PullRequest
2 голосов
/ 28 сентября 2010

Я использую OpenGL с JOGL.Мой проект становится медленным.Я новичок в OpenGL.Каковы некоторые из лучших способов его оптимизации?Какие хорошие инструменты для профилирования?(Я использую Eclipse.)

Недавно я переключился с использования одного статического объекта Texture для целого ряда моделей, чтобы у каждой был свой объект Texture.Похоже, это замедлило процесс.

Другие идеи для оптимизации:

  • Избегайте использования триггера в вызове обновления для имитации орбиты луны
  • Использование большего количества со списками отображения
  • Сортировка моделей по текстуре для уменьшения переключения текстур
  • Сортировка моделей по вращению, чтобы избежать вращения матриц
  • Сортировка моделей по [характеристика X], чтобы избежать [операция Y]

Какие распространенные проблемные значения X и Y указаны выше?

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

Будучи новичком в OpenGL, у меня нет большого инстинкта для того, что здесь делать.

1 Ответ

2 голосов
/ 28 сентября 2010

Что касается оптимизации ваших частей кода OpenGL, я бы порекомендовал использовать технологии OpenGL, которые сокращают передачу данных клиентским <-> сервером (т. Е. Обмен данными между процессором и графическим процессором). Списки отображения определенно повышают производительность, поскольку они могут значительно сократить объем данных, передаваемых с клиента на сервер (система на графический процессор). Списки отображения и массивы вершин являются хорошим началом для повышения производительности по сравнению с непосредственным режимом, но было больше улучшений, таких как буферные объекты и шейдеры .

Я предлагаю вам взглянуть на страницы SongGo OpenGL . Они дают отличное объяснение и реализацию нескольких из вышеупомянутых тем с полными примерами кода.

Редактировать : Я забыл упомянуть, что его примеры написаны на C ++, но вызовы OpenGL должны быть одинаковыми, если не очень схожими.

...