Qt5学习-基本概念

[TOC]

架构

什么是

QML 还是 QtWidget

科技时代发s


QT播放器Windows上运行需要安装一个DirectShow解码器,例如LAV Filters

输出视频使用:QOpenGLWidget
程序发布使用:windeployqt

使用QPainter绘制视频图像不是一个好的解决方案:
1、YUV / RGB 转换费CPU
2、QPainter大面积绘制效率不高

OpenGL是一个不错的选择,目前移动设备上很多都是用GLES实现视频渲染。

大概思路是:
创建一个texture
实现一个shader用于YUV / RGB 转换
每次渲染将视频数据update到texture
将texture绘到一个表面

自从 Qt5 以后,Qt 的框架进行了大幅调整和更新,原有的 OpenGL 代码似乎已经无法在新版 Qt 上运行了。

在 Qt5 中,新增了 QOpenGL* 类,用以取代之前的 QGL* 类。

注意,虽然我们仍然能通过 Qt5 中的 OpenGL 模块使用 QGL* 类,但强烈建议大家在新的 Qt 应用程序中使用 QOpenGL* 类而不是 QGL* 类。

另外,在 Qt5 中,已经将 OpenGL 集成到了 Gui 模块中。因此,我们要想使用与 OpenGL 相关的类和函数,只需要在 .pro 工程文件中包含 gui 模块就可以了,无需像以前一样还要包含 opengl 。

initializeGL

该函数用来初始化当前的 OpenGL 环境。

注意,在此函数中,我们必须调用 initializeOpenGLFunctions(); 语句以便 Qt 在后台完成 OpenGL 环境的初始化工作

QOpenGLFunctions可以访问OpenGL ES 2.0 API。也可以不从QOpenGLFunctions继承,通过 QOpenGLContext
来访问OpenGL函数,用法有2种
QOpenGLFunctions functions(QOpenGLContext::currentContext());
functions.glFunctionHere();
// 或者
QOpenGLFunctions *functions = QOpenGLContext::currentContext()->functions();

functions->glFunctionHere();















































































sdfsdf

















胜多负少的


猜你喜欢

转载自blog.csdn.net/rxs0011/article/details/78757089