Russian Qt Forum

Qt => 2D и 3D графика => Тема начата: Вудруф от Февраль 01, 2010, 13:16



Название: OpenGL, скорость работы в QGLWidget и QGraphicsScene
Отправлено: Вудруф от Февраль 01, 2010, 13:16
Есть два варианта приложения:
1. QGLWidget с переопределённым paintGL
2. QGraphicsView/QGraphicsScene с QGLWidget в качестве viewport'а и переопределённым drawBackground.
В обоих случаях исполняется один и тот же GL-ный код. Больше на сцене ничего нет.

На WinXP SP2/GeForce 8400 GS работает примерно одинаково, на Ubuntu 9.10 x86_64/GeForce GTX 260 второй вариант медленнее на 40%. Падение именно процентное, что при одной модели и fps около 4к, что при 100 и fps около сотни.
Кто-нибудь знает, с чем может быть связано?


Название: Re: OpenGL, скорость работы в QGLWidget и QGraphicsScene
Отправлено: Racheengel от Февраль 02, 2010, 15:09
QGraphicsView тормозит, да. Есть такое. с чем связано - хз, наверно баг.


Название: Re: OpenGL, скорость работы в QGLWidget и QGraphicsScene
Отправлено: ecspertiza от Февраль 02, 2010, 16:14
Я конечно дико извиняюсь ,но на мой взгляд это извращенство делать по второму варианту, первый ципляет только один класс, а второй сразу три(если не больше), конечно будет тормазить, чем вызванно желание делать по второму варианту?


Название: Re: OpenGL, скорость работы в QGLWidget и QGraphicsScene
Отправлено: panAlexey от Февраль 02, 2010, 16:20
На WinXP SP2/GeForce 8400 GS работает примерно одинаково, на Ubuntu 9.10 x86_64/GeForce GTX 260 второй вариант медленнее на 40%. Падение именно процентное, что при одной модели и fps около 4к, что при 100 и fps около сотни.
Кто-нибудь знает, с чем может быть связано?
гы, а для кого ты свою поделку готовишь?
для офисных компов или для геймеров.
Если для офисных, выдергивай к чертям свою видеокарту и тести..
а связано с тормознутостью Qt при отрисовке на машинах без видюх...


Название: Re: OpenGL, скорость работы в QGLWidget и QGraphicsScene
Отправлено: Вудруф от Февраль 02, 2010, 21:29
Я конечно дико извиняюсь ,но на мой взгляд это извращенство делать по второму варианту, первый ципляет только один класс, а второй сразу три(если не больше), конечно будет тормазить, чем вызванно желание делать по второму варианту?
Разумеется, не просто так. Qt планировалось использовать для отрисовки интерфейса поверх GL. Рисовать поверх QGLWidget'а дюже неудобно, уж лучше вместо Qt тот же CEGUI заюзать. Связка QGraphicsView/QGraphicsScene предоставляет более богатые возможности: Animation Framework, Graphics Layouts, etc. В конце концов даже встраивание QWidget'ов через QProxyWidget для сокращения кода, хоть они и тормознее, чем QGraphicItem'ы.
И всё бы ничего, но тормозит. При пустой сцене не должна, т.к. дополнительной работы там нет, а вот всё равно.
Баг троллям запостил, посмотрим, что скажут.


Название: Re: OpenGL, скорость работы в QGLWidget и QGraphicsScene
Отправлено: Вудруф от Февраль 02, 2010, 21:30
Если для офисных, выдергивай к чертям свою видеокарту и тести..
а связано с тормознутостью Qt при отрисовке на машинах без видюх...
Вообще ничего не понял.


Название: Re: OpenGL, скорость работы в QGLWidget и QGraphicsScene
Отправлено: GreatSnake от Март 10, 2010, 11:47
Посмотри здесь (http://doc.trolltech.com/qq/qq26-openglcanvas.html#turbocharginggraphicsview).
Тормоза могут быть из-за этого
...
we set the viewport update mode of the QGraphicsView  to FullViewportUpdate as a QGLWidget cannot perform partial updates
...


Название: Re: OpenGL, скорость работы в QGLWidget и QGraphicsScene
Отправлено: break от Март 10, 2010, 12:06
Цитировать
уж лучше вместо Qt тот же CEGUI заюзать

CEGUI можно использовать совместно с GLWidget

Интересно что у вас за программа и почему требуется отрисовывать интерфейс через GL (просто даже в мудреных 3D редакторах интерфейс со всякими параметрами остается в обычных GUI окошках)? я пока нормальный интерфейс GL-ный видел только в blender, во всех остальных местах где выводится пару надписей овердровом не столь важно как это выводить.