Linux環境でQtを使用し組み込み系アプリの開発を行っています。
タイトルの通り、マルチスレッドでフレームバッファに直接描画する方法を探しています。
具体的に実現したいことは、以下のことです。
AスレッドでQtアプリの操作や描画を行う。
Bスレッドでmsec単位の表示更新を常に行う。
Bスレッドの表示更新が遅延することは許されないため、Bスレッドの描画をフレームバッファに直接描画し、タイミングを担保しようと考えています。
一応、シングルスレッドでは、QWidgetを継承したクラスで、以下の実装をすると、即時でディスプレイに反映されました。
QBackingStore *pBack;
pBack = this->backingStore();
QPaintDevice *pPaint;
pPaint = pBack->paintDevice();
QPainter painter(pPaint);
painter.fillRect(0, 0, 100, 100, QColor(255,0,0));
pBack->flush(QRegion(0, 0, 100, 100));
しかし、これをマルチスレッドで実現する(Bスレッドで扱うクラスから呼び出す)と、this->backingStore();でNULLが返却されてしまいます。
そもそも上記の方法が正しいかも分かっていないため、まずはフレームバッファへの描き込み方法をご教授いただけるでしょうか?
マルチスレッドでの方法も分かる方がおりましたら、ご教授いただけると大変助かります。
よろしくお願いいたします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。