Russian Qt Forum

Qt => Пользовательский интерфейс (GUI) => Тема начата: cherv от Февраль 20, 2010, 14:28



Название: использование аппаратного ускорителя
Отправлено: cherv от Февраль 20, 2010, 14:28
Всем доброго времени суток!
я только начинаю свое знакомство с QT и сейчас стоит следующая задача:
необходимо создать GUI с использованием аппаратного ускорителя.
Подскажите, пожалуйста куда копать и какими средствами можно реализовать?


Название: Re: использование аппаратного ускорителя
Отправлено: SABROG от Февраль 20, 2010, 14:44
аппаратного ускорителя

Это тебе нужно собирать второй андронный коллайдер.

Создавай QGraphicsView и ставь ему OpenGL'овский viewport:

Код
C++ (Qt)
QGraphicsView view(&scene);
view.setViewport(new QGLWidget(QGLFormat(QGL::SampleBuffers)));
 

Затем создавай свои виджеты и помещай на сцену: QGraphicsScene::addWidget()


Название: Re: использование аппаратного ускорителя
Отправлено: mcrads от Февраль 20, 2010, 18:25
Как понимать использовать аппаратный ускоритель? тебе нежно отрисовывать 3Д графику в отдельном виджете? или же сделать как майкрософт со своими виндовс виста и 7? т.е. "настоящий полностью трехмерный интерфейс"? второе средствами qt проблематично =)) а первое да, SABROG прав ) советую почитать книжки по qt, особенно если найдешь книжку изданную работниками троллей - там подробно разобраны многие фишки.


Название: Re: использование аппаратного ускорителя
Отправлено: break от Февраль 21, 2010, 03:04
Цитировать
второе средствами qt проблематично =))


KDE 4 видел?


Название: Re: использование аппаратного ускорителя
Отправлено: lit-uriy от Февраль 21, 2010, 06:43
>>KDE 4 видел?
я видел, только 3-х мерного там ничего не заметил, заметил, что по сравнению с KDE3 сильно тормозит.


Название: Re: использование аппаратного ускорителя
Отправлено: mcrads от Февраль 21, 2010, 10:08
КДЕ4 имеет всего лишь отличную отрисовку с альфа-картами, не более того. ну может более, но это не столь существенно.
(спецэффекты переходов между рабочими столами - немножко другое, я говорю о трехмерных окошках, кнопочках, панели - как в висте / 7)
а если создавать действительно трехмерный интерфейс средствами qt - все это безобразие тормозить будет больше чем кде =) не те средства.


Название: Re: использование аппаратного ускорителя
Отправлено: cherv от Февраль 21, 2010, 13:14
вообщем ситуация следующая:
есть процессор, со встроенным 2D ускорителем, и дабы снизить нагрузку на сам процессор, необходимо задействовать имеющийся ускоритель для прорисовки пользовательского интерфейса(кнопочки, лэйблы и т.д.)

SABROG
Спасибо! Попробую :)


Цитата: mcrads
советую почитать книжки по qt, особенно если найдешь книжку изданную работниками троллей

что за работники троллей? как книга называется? в тех книгах, которые у меня есть ничего конкретного не расписано... :(


Название: Re: использование аппаратного ускорителя
Отправлено: break от Февраль 21, 2010, 13:15
я вообще то не фанат KDE 4

Цитировать
по сравнению с KDE3 сильно тормозит.
Я качал последний лайв сд специально чтобы посмотреть - у меня на крате NVidia ничего не тормозило совершенно

Цитировать
спецэффекты переходов между рабочими столами - немножко другое
почему это?

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

Цитировать
а если создавать действительно трехмерный интерфейс средствами qt - все это безобразие тормозить будет больше чем кде =) не те средства
1) не понял фразу - KDE и так написан на Qt 4
2) зачем в принципе трехмерный интерфейс, и что имеется ввиду - интерфейс на базе GL типа CeGUI или просто красивые окошки с тенями и т.д.? Если второе думаю в Qt с ними проблем с производительностью не будет..
3) и вообще вы же в курсе про способ ускорения виджетов через OpenGL http://doc.trolltech.com/qq/qq26-openglcanvas.html
4) ну и в конце концов - берем QGlWidget- и там делаем любой интерфейс через OpenGL - думаю даже тот же CeGui можно использовать - только зачем...


Название: Re: использование аппаратного ускорителя
Отправлено: xokc от Февраль 22, 2010, 13:19
Использовать в качестве render OpenVG. Если сможешь скомпилировать Qt с его поддержкой. И если твоя видеокарта и драйверы к ней поддерживают OpenVG.


Название: Re: использование аппаратного ускорителя
Отправлено: SABROG от Февраль 22, 2010, 14:29
Использовать в качестве render OpenVG. Если сможешь скомпилировать Qt с его поддержкой. И если твоя видеокарта и драйверы к ней поддерживают OpenVG.

Насколько я знаю OpenVG больше для мобильных устройств рассчитан. К тому же мне не удалось найти ни одного примера сборки OpenVG с Qt под windows и пример работающего приложения.


Название: Re: использование аппаратного ускорителя
Отправлено: BRE от Февраль 22, 2010, 14:48
Насколько я знаю OpenVG больше для мобильных устройств рассчитан. К тому же мне не удалось найти ни одного примера сборки OpenVG с Qt под windows и пример работающего приложения.
Собирал пару версий Qt с ShivaVG под linux, качественно рисовать заставить не получилось. :(
Использование OpenGL в качестве graphicssystem дает картинку значительно качественней.


Название: Re: использование аппаратного ускорителя
Отправлено: SABROG от Февраль 22, 2010, 15:59
Хотел собрать ShivaVG в MSYS. Пришлось доставлять кучу отсутствующих пакетов под MSYS, в итоге застрял на этапе ./configure, нет OpenGL и GLUT исходников. Как я понял GLUT невозможно собрать под Windows компилятором MinGW (только MSVC или linux). Есть порт, но он настолько старый, что в FAQ'e по MinGW существует длинная портянка, которая должно исправить проблемы с компиляцией этого порта. В общем я забил на это.


Название: Re: использование аппаратного ускорителя
Отправлено: cherv от Февраль 28, 2010, 00:43
OpenVG не катит, т.к. на сколько я понял это для векторной графики... А вот OpenGL ES 1.1 самое оно. :)
Вот только пока что не могу понять как заставить QT использовать именно его а не обычный OpenGL. Если кто-то занимался таким, подскажите плиз....

и еще такой вопрос такой:
в процессе выполнения не происходит прорисовки лейбла 2 раза, т.е. долго думает, а потом поворачивает сразу на 165 градусов.
Как заставить прорисовывать дважды?  ::)

Код:
  
    QGraphicsScene scene;
    QGraphicsView view(&scene);

    view.setViewport(new QGLWidget(QGLFormat(QGL::SampleBuffers)));
    view.setViewportUpdateMode(QGraphicsView::FullViewportUpdate);

    QGraphicsProxyWidget *label = scene.addWidget(new QLabel("Hello, world!"));
 
    label->rotate(65);
    view.show();

    sleep(10);

    label->rotate(165);   
    view.show();


Название: Re: использование аппаратного ускорителя
Отправлено: SABROG от Февраль 28, 2010, 00:52
Код:
  
    sleep(10);

Сам же его думать и заставил. Блокируешь главный цикл событий на 10 секунд, в это время никакие события не обрабатываются, а сидят в очереди и жду когда же ты вернешься. Перерисовка окна это тоже событие. Люди отдельные потоки не из прихоти используют, а чтобы интерфейс программы оставался рабочим в момент выполнения долгих операций.

Смотри в сторону Animation Framework или вращай виджет по таймеру.


Название: Re: использование аппаратного ускорителя
Отправлено: xokc от Февраль 28, 2010, 18:05
OpenVG не катит, т.к. на сколько я понял это для векторной графики...
А ты думаешь, что когда рисуешь label это во что превращается? Если ты, конечно, не растровый шрифт используешь. В чистом виде векторная графика.