4 つのカメラ オブジェクトがあります。各カメラ オブジェクトは、フレームを個別に更新します。ビデオウォール クラスでこれらのフレームを視覚化したいと思います。基本的に、私のビデオウォールは draw Widget メソッドを持つ gridlayout の子です。
各カメラ オブジェクトには imageHolder ウィジェットがあります。ImageHolder ウィジェットは qOpenglWidget の子です
void OpenGLImageHolder::display(const QImage* img)
{
m_image = img;
this->update();
}
void OpenGLImageHolder::paintEvent(QPaintEvent*)
{
QPainter painter(this);
painter.drawImage(this->rect(), *m_image);
}
各画像ホルダーには QTimer があり、QTimer::timeOut() は OpenGLImageHolder::display() に接続されています。
残念ながら、このセットアップでは、同時に 3 台のカメラしか表示できません。4 台目のカメラを追加すると、3 つのうちの 1 つ (または 2 つ) がフリーズします。resizeWidget を実行すると正しい Image が更新されるため、display が呼び出されたことがわかります。
videoWallの正しい作り方は?独自のウィンドウを持つ 1 つの openglWidget を作成し、この openglWidget に直接画像を描画しますか? 動作をプロファイリングするためにどのツールを使用できますか (標準の msvs プロファイラーでは不十分なようです)。