Бих искал да създам подобен на автомобилно табло Qt интерфейс (габарити, циферблати, копчета и т.н.). Устройството ми има 800x480 LCD, захранван от imx287 ARM SoC (armv5te без хардуерно плаване или GPU).
Проблемът, който имам, е, че е много бавен. Единичен индикатор (фоново PNG изображение, с въртящо се PNG изображение на циферблат), начертан с 20 кадъра в секунда, използва ~20% процесорно време. Добавянето на един изобразен текстов низ увеличава до 40% използването на процесора.
Използвам QGraphicsScene, който използва много изчисления с плаваща запетая... проблем, тъй като моята SoC няма хардуерна способност за плаване.
Има ли алтернативи на QGraphicsScene, които биха работили добре за мен?
Ето какво правя в момента:
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
bg.load("rpm.png");
needle.load("needle.png");
scene = new QGraphicsScene(this);
scene->setSceneRect(0,0, 800,480);
scene->addPixmap(bg);
needleItem = scene->addPixmap(needle);
needleItem->setPos(400-4,17);
textItem = scene->addText(tr(""), QFont("utsaah", 50, QFont::Bold, true));
textItem->setDefaultTextColor(QColor(255,255,255));
textItem->setPos(430, 360);
ui->graphicsView->setScene(scene);
thread = new UpdateDialsThread(this);
connect(thread, SIGNAL(updateDials()), this, SLOT(updateDials()));
thread->start();
}
void MainWindow::updateDials(void)
{
static int deg = 180;
deg += 1;
if (deg > 180+270)
deg = 180;
QTransform trans;
trans.translate(needleItem->boundingRect().width()/2, needleItem->boundingRect().height());
trans.rotate(deg, Qt::ZAxis);
trans.translate(-needleItem->boundingRect().width()/2, -needleItem->boundingRect().height());
needleItem->setTransform(trans);
textItem->setPlainText(tr("%1").arg(deg*10, 4, 'f', 0));
}
Благодаря предварително!
.bpp
и.pcr
. Променете.bpp = 32
и.pcr = 0xF0D00080|END_SEL
на.bpp = 16
и.pcr = 0xF0D00080
(добре за iMx25, използващ платформено устройство). Т.е. драйверът го поддържа, просто трябва да изпратите някои конфигурационни данни. Може да се наложи да погледнете листа с данни на iMx28 за стойността.pcr
. - person artless noise   schedule 29.04.2014