开发者

OpenGL window video capture problem

Probably this is very easy but I can't find the right words for google to spit out what I need. I have a custom derived QGLWidget and want to do some video capturing to show it to others.

The capturing works well for all other widgets (Buttons, Checkboxes, ...) but my GLWidget remains blank (to the normal user it is fully responsive). When I hover the mouse over it, then the rectangular area of the mouse is redrawn on the widget.

How can I tell my widget/the windowsystem to refresh the whole area when motion capturing?

Probably related to the same problem: I once made a session in TeamViewer where the same problem occurred.

EDIT

When I use the Qt Demo Hello GL and capture it there is the same problem.

EDIT2

I tried one开发者_JS百科 of my GLUT Demos and they did not work either, also I read about problems recording opengl output but this was on windows machines. Maybe there are also problems on linux?

Btw. I use xvidcap for the capturing.


Btw. I use xvidcap for the capturing.

I'm not sure, but IIRC xvidcap uses the Xdamage extension to grab only, what programs report as being rendered new. OpenGL operations don't set the damage flag.

Personally I use ffmpeg for screencapturing under X11. Something along the lines

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

For example

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

I found mjpeg, ljpeg or x264 / fast lossless codecs being well suited for this task.


This is a bit of a guess as I have little experience with the GL widget specifically, but the first thing I would try would be to set the opaque paint event flag on your widget:

setAttribute( Qt::WA_OpaquePaintEvent )
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜