R
19 декабря 2018 г. 9:10

Qt quick на raspberry 3. Очень медленно.

QML, ARM

Приветствую. Реализовал интерфейс с использованием QML в винде на ПК. Однако собрав этот же проект на малине (raspbian), я получил дико лагающее приложение. Хотя интерфейс крайне примитивен. Также приложение выдает сообщение "JIT is disabled for QML. Property bindings and animations will be very slow. Visit https://wiki.qt.io/V4 to learn about possible solutions for your platform." В интернетах пишут что надо включить поддержку OpenGL на малине, но есть нюанс: дисплей у меня работает по SPI интерфейсу, а не HDMI. Кто что может подсказать?

Виртуальный хостинг со скидкой 10 процентов
Виртуальный хостинг со скидкой 10 процентов
EVILEG предлагает надёжный хостинг со скидкой 10% на виртуальный хостинг и 5% на VPS
7

сейчас делаю проект на малине, как ось использую ArchLinux, Qt 5.12 проект на QML - сильных лагов не замечено. работаю непосредственно на малине. можно пример кода?

0
  • 19 декабря 2018 г. 9:17

Что за дисплей такой?

0

какой? подключил клаву и морду, как стандартный пк

0

Добрый день!

Не совсем уверен, как именно соотносится OpenGL и SPI интерфейс, но OpenGL же - это поддержка отрисовки графики средствами графической карты.
То есть, если правильно понимаю, то вам должно быть достаточно просто включить поддержку OpenGL на Raspberry 3. А библиотеки малины уже сами должны разобраться, в каком виде высылать отрисованную графику на интерфейс.

  1. Open raspi-config
  2. Advanced Options
  3. GL Driver
  4. GL(Full KMS)

Пробовали эти шаги повторить? Если нет, то сделайте это. Если проблема действительно только во включении OpenGL, то это должно решить проблему.

0

типа родного дисплея, которые подключаются через шлейф на малине и имеют на борту тач.

0
R

У меня тоже возникли сильные сомнения в том что отрисовка во фрэймбуффер и отправка из него по SPI как-то связаны, когда я такое услышал на другом форуме. Включать GL драйвер я пробовал, это не помогло. Использую qt5.7. Может из-за того что нет компиляции QML? Как в более поздних версиях? Вот пример кода. Просто переключение фокуса между элементами уже тормозит.

Page
{
    focus: true
    width: 480
    height: 320
    Image
    {
        source: "images/фон.png"
        anchors.centerIn: parent
        z: 0
    }
    ListView
    {
        id: mainMenulistView
        anchors.fill: parent
        anchors.centerIn: parent
        anchors.leftMargin: 35
        focus: true
        spacing: 5
        orientation: ListView.Horizontal
        activeFocusOnTab: true
        model: ListModel
        {
            ListElement
            {
                title: "Печать";
                selImage: "images/печать-фокус.png"
                deselImage: "images/печать.png"
            }
            ListElement
            {
                title: "Настройки";
                selImage: "images/настройки-фокус.png"
                deselImage: "images/настройки.png"
            }
            ListElement
            {
                title: "Инфо";
                selImage: "images/инфо-фокус.png"
                deselImage: "images/инфо.png"
            }
        }

        delegate: Image
        {
            id: rect
            //source: ListView.isCurrentItem ? model.selImage : model.deselImage
            source: activeFocus ? model.selImage : model.deselImage
            anchors.verticalCenter: parent.verticalCenter
            width: activeFocus ? 134 : 130
        }

        onCurrentIndexChanged:
        {

        }
        Keys.onLeftPressed:
        {
            mainMenulistView.decrementCurrentIndex();
            console.log(mainMenulistView.currentIndex)
        }
        Keys.onRightPressed:
        {
            mainMenulistView.incrementCurrentIndex();
            console.log(mainMenulistView.currentIndex);
        }
        Keys.onSpacePressed:
        {
            if(mainMenulistView.currentIndex == 0)
            {
                console.log("enter to Print");
                stackView.push("menuPrint.qml");
            }
            else if(mainMenulistView.currentIndex == 1)
            {
                console.log("enter to Settings");
                stackView.push("menuSettings.qml");
            }
        }
    }
}
0

У SPI интерфейса-дисплея скорость медленная, отрисовка 2-3 кадра в сек, подключите нормальный HDMI и запустите ту же самую программку. Малина вполне неплохо справляется с FullHD при правильных настройках, что она с QML не справится как-то не верю.

0

Комментарии

Только авторизованные пользователи могут публиковать комментарии.
Пожалуйста, авторизуйтесь или зарегистрируйтесь
G
24 июля 2019 г. 4:20
G0tzef

C++ - Тест 005. Структуры и Классы

  • Результат:66баллов,
  • Очки рейтинга-1
VK
24 июля 2019 г. 3:49
Viktoriia Komarova

C++ - Тест 001. Первая программа и типы данных

  • Результат:40баллов,
  • Очки рейтинга-8
G
24 июля 2019 г. 3:25
G0tzef

C++ - Тест 004. Указатели, Массивы и Циклы

  • Результат:80баллов,
  • Очки рейтинга4
Последние комментарии
23 июля 2019 г. 12:14
IscanderChe

Вот ссылка: https://github.com/iscander-che/TestReportViewer .
23 июля 2019 г. 5:42
Евгений Легоцкой

Хорошо, хотя конечно это С, а не С++ )))) Но если вдруг будут проблемы, то решение через класс со статическими переменными вы видели ))
23 июля 2019 г. 5:33
IscanderChe

"Не потребует каждый раз объявлять extern в других файлах". И так не требует. У меня в тестовом классе эти переменные используются без дополнительного объявления. Так же объявил их в cpp-файле о…
23 июля 2019 г. 5:28
IscanderChe

В репозиторий могу сегодня вечером выложить. "Или ее надо компилить самому под дистриб?" Тут я не совсем понимаю, что вы имеете ввиду. Я выложу в репозиторий исходный код утилиты, и всё.
23 июля 2019 г. 4:32
Евгений Легоцкой

Есть комментарий по вашему коду. Лучше бы вместо глобальных переменных в стиле Си, то есть с использоавнием extern, написали бы статические переменные в рамках класса. IMHO - это будет выглядеть…
Сейчас обсуждают на форуме
24 июля 2019 г. 4:57
Михаиллл

Это не помогает. Ниже мой код Rectangle{ //Flickable { //contentX: 100 id: rectangleForListView y: parent.height * 0.15 height: parent.height * 0.…
24 июля 2019 г. 3:17
Евгений Легоцкой

Ну вот теперь я несколько в ступоре. Запустите из консоли проект и посмотрите тогда, на что ругается. Также, следовало бы посмотреть в настройках самой виртуальной машины, что по поддержке OpenG…
23 июля 2019 г. 8:20
Михаиллл

Так работает QFile f1(dbAdress); f1.setPermissions(QFileDevice::WriteOther);
23 июля 2019 г. 7:11
Pavel K.

Советую использовать нечто такое или такое
22 июля 2019 г. 10:50
Pavel K.

Благодарю.Буду пробовать.
Ищу работу?
5,000.00 руб. - 15,000.00 руб.
Дизайнер
Moskovskiy, Moscow, Russia
25,000.00 руб. - 30,000.00 руб.
Разработчик Qt/C++
Barnaul, Altai Krai, Russia

Для зарегистрированных пользователей на сайте присутствует минимальное количество рекламы

EVILEG
О нас
Услуги
Присоединяйтесь к нам
© EVILEG 2015-2019
Рекомендует хостинг TIMEWEB