QOpenGLWight与QPainter混合渲染

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
混合渲染的时候有些注意事项,在后文中列出。否则可能会出现文字能正常绘制,但是视频画面为白色的情况。

QOpenGLWight与QPainter混合渲染_第1张图片

二.源码

ZgVideoOpenGLWidget.h

#ifndef ZGVIDEOOPENGLWI

你可能感兴趣的:(Qt5实用编程技术,QOpenGLWidget,QPainter,渲染,着色器,webRTC)