可能这很容易,但我找不到谷歌正确的话来吐出我需要的东西。 我有一个自定义的派生QGLWidget,并希望做一些视频捕获,以显示给其他人。
捕获适用于所有其他小部件(按钮,复选框,...)但我的GLWidget仍然是空白的(对于普通用户,它是完全响应的)。当我将鼠标悬停在鼠标上时,鼠标的矩形区域将在窗口小部件上重绘。
如何在动作捕捉时告诉我的小部件/ windowsystem刷新整个区域?
可能与同一问题有关:我曾在TeamViewer中发生过相同问题的会话。
修改
当我使用Qt演示Hello GL并捕获它时,存在同样的问题。
EDIT2
我尝试了一个我的GLUT演示,他们也没有工作, 我也读过有关记录opengl输出的问题,但这是在Windows机器上。 也许linux上也存在问题?
顺便说一下。我使用xvidcap进行捕获。
答案 0 :(得分:1)
顺便说一下。我使用xvidcap进行捕获。
我不确定,但是IIRC xvidcap只使用Xdamage扩展来抓取,哪些程序报告为新呈现。 OpenGL操作不会设置损坏标志。
我个人在X11下使用ffmpeg进行screencapturing。一些事情
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
我发现mjpeg
,ljpeg
或x264 / fast lossless
编解码器非常适合此任务。
答案 1 :(得分:0)
这是一个猜测,因为我对GL小部件没有特别的经验,但我要尝试的第一件事就是在你的小部件上设置不透明的paint事件标志:
setAttribute( Qt::WA_OpaquePaintEvent )