spbtellurian
Гость
|
|
« : Март 31, 2010, 14:15 » |
|
Есть класс окна (унаследован от QWidget ) занимающийся отрисовкой различной 2D графикой в том числе текста. При наследовании окна отрисовки от QWidget загрузка CPU 3-5% Посмотрев пример "2D Painting Example" ради эсперемента попробывал унаследоваться от QGLWidget. Загрузка CPU сильно возросла !!. вместо 3-5% получил 35-37% Почему у меня такие тормоза Qt 4.3.3\WinXP\NVidia7900
|
|
|
Записан
|
|
|
|
GreatSnake
|
|
« Ответ #1 : Март 31, 2010, 14:19 » |
|
Для начала не мешало бы обновить Qt.
|
|
|
Записан
|
Qt 5.11/4.8.7 (X11/Win)
|
|
|
spbtellurian
Гость
|
|
« Ответ #2 : Март 31, 2010, 14:32 » |
|
Обновлять Qt по каждому чиху можно когда пишешь для себя а когда есть целый вагон приложений разбросанных по всей стране то вопрос совместимости стоит более остро чем "свежеть" версии Qt Однако хотелось бы по существу вопроса Почему в отрисовка через QGLWidget оказалась значительно медленнее
|
|
|
Записан
|
|
|
|
alexman
Гость
|
|
« Ответ #3 : Март 31, 2010, 14:42 » |
|
Если код (кроме наследования) не изменился, то скорее всего из-за взаимодействия Qt и OpenGL.
|
|
|
Записан
|
|
|
|
GreatSnake
|
|
« Ответ #4 : Март 31, 2010, 14:45 » |
|
Обновлять Qt по каждому чиху можно когда пишешь для себя а когда есть целый вагон приложений разбросанных по всей стране то вопрос совместимости стоит более остро чем "свежеть" версии Qt
Почитайте тогда это, может измените свое мнение.
|
|
|
Записан
|
Qt 5.11/4.8.7 (X11/Win)
|
|
|
spbtellurian
Гость
|
|
« Ответ #5 : Март 31, 2010, 14:48 » |
|
Код один в один. Просто изменил название класса от котрого у наследвался.
посмотрел примерчик из QT SDK "2D Painting Example" вдохновился опсание мол QGLWidget ускоряет отрисовку 2D. А на практике то получается совесм наоборот.
Маленький примерчк "2D Painting Example" рисует одинаково что в QWidget что в QGLWidget а вот на релаьном дел у меня полный ахтунг получилось.
|
|
|
Записан
|
|
|
|
alexman
Гость
|
|
« Ответ #6 : Март 31, 2010, 14:52 » |
|
Код один в один. Просто изменил название класса от котрого у наследвался.
А кто тогда будет функции virtual void initializeGL () virtual void paintGL () virtual void resizeGL ( int width, int height )
переопределять?
|
|
|
Записан
|
|
|
|
alexman
Гость
|
|
« Ответ #7 : Март 31, 2010, 14:54 » |
|
посмотрел примерчик из QT SDK "2D Painting Example" вдохновился опсание мол QGLWidget ускоряет отрисовку 2D. А на практике то получается совесм наоборот.
Не может быть! Скорее всего что-то не очень хорошо спроектировано!
|
|
|
Записан
|
|
|
|
spbtellurian
Гость
|
|
« Ответ #8 : Март 31, 2010, 15:03 » |
|
virtual void initializeGL () virtual void paintGL () virtual void resizeGL ( int width, int height ) [/code] переопределять?
Будет плесать от печки т.е. от QT SDK там есть примерчик "2D Painting Example". И там нет переопределений выше озвученных методов.
|
|
|
Записан
|
|
|
|
spbtellurian
Гость
|
|
« Ответ #9 : Март 31, 2010, 15:07 » |
|
Не может быть! Скорее всего что-то не очень хорошо спроектировано! Всё возможно. Вероятно мой код заточен под QWidget и для QGLWidget его надо модефицировать. Тогда возникает другой вопрос что и как ? to ALL: Кто сталкивался с подобным переносом отрисовки может подскажет какие есть грабли ?
|
|
|
Записан
|
|
|
|
ieroglif
Гость
|
|
« Ответ #10 : Март 31, 2010, 15:52 » |
|
граблей много, почти все индивидуальны и проходятся исключительно на собственном опыте.
|
|
|
Записан
|
|
|
|
spbtellurian
Гость
|
|
« Ответ #11 : Март 31, 2010, 15:57 » |
|
ну то что граблей млжет быть много это опнятно. Вопрос в другом: Кто сталкивается с проблемами производительности при переходе от QWidget к QGLWidget ?
|
|
|
Записан
|
|
|
|
alexman
Гость
|
|
« Ответ #12 : Март 31, 2010, 16:00 » |
|
Трудный вопрос (сугубо индивидуально)
|
|
|
Записан
|
|
|
|
spbtellurian
Гость
|
|
« Ответ #13 : Март 31, 2010, 16:04 » |
|
Чегото я вас не понимаю привожу конкретный пример спрашиваю конкретный вопрос а вы всё какими то общими фразами...
Вот конкретно вы alexman и ieroglif сталкивались с описанной мной проблемой и если да то как решили ?
|
|
|
Записан
|
|
|
|
ieroglif
Гость
|
|
« Ответ #14 : Март 31, 2010, 18:33 » |
|
Вот, конкретно, мы - иероглиф, писали (да и до сих пор под настроение пишем) 3д игру под огл при юзании qt. итогом стало что что один и тот же код под линухом давал 25фпс, а под вендой = 60. а уж сколько я там граблей то перекопал что бы убыстрить - и не вспомнишь. понимаешь, несколько месяцев ковырялся в огле пытаясь соптимизировать код - так что граблей много, они индивидуальны, и рассказать про них можно только двумя фактами: 1. кури маны, читай книги по оглу, ковыряйся, пропуй писать примеры и т.д. 2. повторить п.1. пока всё на заработает на устраивающем тебя уровне.
|
|
|
Записан
|
|
|
|
|