@alexey_abramov

Разработка игр на Qt — QOpenGL или QGraphicsScene? Или есть еще варианты?

Здравствуйте.
Пишу третью игру на Qt, и возник вопрос выборки графического 2д движка.
Ранее не задумываясь писал через QGraphicsScene. Очень удобно. В одной игре генерируемых объектов которые меняют позицию по таймеру не было, в другой игре - их было не более 5 в одном состоянии. Все было ок.
Теперь же в новой игре, возможно примерно максимально 25 элементов, которые меняют свое состояние по таймеру. Приложение начинает чудить когда их становится более 20.
Т.е. QTimer с интервалом 5, начинает работать уже на самом деле как таймер с интервалом в несколько раз больше. Как только объекты удаляются и их становится меньше - таймер "восстанавливается", приложение перестает работать медленно. А еще процессор загружается сразу на 50%.
Вроде компьютер нормальный, однако такие глюки разочаровали. Есть ли варианты как-то оптимизировать QGraphicsScene? Или же все-таки лучше сесть и переписать код на QOpenGL? Как у него обстоят дела с такой же нагрузкой?
Уйму времени просто потратил, хотелось бы узнать как оптимизировать работу, а если же все-таки графическая сцена действительно не вариант для игр, то придется переписать. И есть ли в Qt/поддерживаемые Qt еще графические движки? Сразу бы хотелось выбрать максимально оптимальный.
Спасибо
  • Вопрос задан
  • 1950 просмотров
Решения вопроса 2
Конечно все зависит от логики вашей игры и тяжести ваших ресурсов. Если тут все просто, то отрендерить 25 фигур не составив труда. Возможно у вас проблема в самой логике рендера, где-то делаеться много лишних телодвижений. Сказать более точно сложно... С производетельностью pipeline Qt проблем не должно быть. Возможно Я конечно ошибаюсь, но на моей практике все летало шустро.
Ответ написан
Zifix
@Zifix Куратор тега Qt
Barbatum
Согласен со Станиславом, вряд ли упирается в QGraphicsScene, он и 2000 думаю вывезет.

Однако принципиально это не единственный вариант, есть гораздо более быстрый SceneGraph, который должен спокойно вывозить и сотни тысяч объектов.

Во-первых есть пример игры в комплекте с QtCreator.
Во-вторых, гугл пилил на QML полноценный платформер, называется VoltAir
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@Neonoviiwolf
Flutter developer
Вы не векторные рисунки случаем используете?
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы