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

二.源码

ZgVideoOpenGLWidget.h

#ifndef ZGVIDEOOPENGLWIDGET_H
#define ZGVIDEOOPENGLWIDGET_H

#define ATTRIB_VERTEX 3
#define ATTRIB_TEXTURE 4

#define BACKGROUND_IMAGE_WIDTH 400
  • 4
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

草上爬

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值