QOpenGLWidget取代了之前的QGLWidget类,用以在Qt中提供OpenGL的编程接口。在QGLWidget类中,我们可以通过方法drawTexture来绘制文本。但是在QOpenGLWidget类的时候,这个方法没有提供了。官方文档给出的建议是混合QPainter使用。本文档就是介绍怎么用QPainter来在OPengl窗口上绘制2D文本、
最近在用webRTC做直播的时候,需要在视频窗口左边下角显示用户名。视频是yuv420p格式,在QOpenGLWidget中用着色器渲染,用户名的话,用QPanter绘制最为方便。
一.效果
这个背景log是一帧yuv图像,用jpg转换而来。用ffmpeg将jpg转换为yuv的指令如下:
ffmpeg -i Background.jpg -s 400x300 -pix_fmt yuv420p Background.yuv
转换后用ffplay试下能否正常播放,指令如下:
ffplay -f rawvideo -video_size 400x300 Background.yuv
混合渲染的时候有些注意事项,在后文中列出。否则可能会出现文字能正常绘制,但是视频画面为白色的情况。