0

おそらくこれは非常に簡単ですが、私はグーグルが必要なものを吐き出すための正しい言葉を見つけることができません。カスタム派生のQGLWidgetがあり、他の人に見せるためにビデオキャプチャを実行したいと思います。

キャプチャは他のすべてのウィジェット(ボタン、チェックボックスなど)でうまく機能しますが、私のGLWidgetは空白のままです(通常のユーザーには完全に応答します)。マウスをその上に置くと、マウスの長方形の領域がウィジェットに再描画されます。

モーションキャプチャ時に領域全体を更新するようにウィジェット/ウィンドウシステムに指示するにはどうすればよいですか?

おそらく同じ問題に関連しています:同じ問題が発生したTeamViewerでセッションを行ったことがあります。

編集

Qt Demo Hello GLを使用してキャプチャすると、同じ問題が発生します。

EDIT2

GLUTデモの1つを試しましたが、それらも機能しませんでした。また、opengl出力の記録の問題についても読みましたが、これはWindowsマシンで発生しました。たぶんLinuxにも問題がありますか?

ところで。キャプチャにはxvidcapを使用します。

4

2 に答える 2

1

ところで。キャプチャにはxvidcapを使用します。

よくわかりませんが、IIRC xvidcapは、Xdamage拡張機能を使用して、新しくレンダリングされたと報告するプログラムのみを取得します。OpenGL操作はダメージフラグを設定しません。

個人的には、X11でのスクリーンキャプチャにffmpegを使用しています。線に沿った何か

ffmpeg -f x11grab -r $FRAMERATE -s $WIDTHx$HEIGHT -i $DISPLAY+$XOFFSET,$YOFFSET -vcodec ... -b -y output_file

例えば

ffmpeg -f x11grab -r 18 -s 800x600 -i :0+0,0 -vcodec mjpeg out.avi

mjpegljpegまたはx264 / fast losslessコーデックがこのタスクに適していることがわかりました。

于 2011-09-14T22:07:33.493 に答える
0

特にGLウィジェットの経験がほとんどないため、これは少し推測ですが、最初に試みるのは、ウィジェットに不透明なペイントイベントフラグを設定することです。

setAttribute( Qt::WA_OpaquePaintEvent )
于 2011-09-14T15:46:56.847 に答える