123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354 |
- #ifndef PLAYEROPENGLWIDGET_H
- #define PLAYEROPENGLWIDGET_H
- #include <QOpenGLWidget>
- #include <QOpenGLFunctions_3_3_Core>
- #include <GL/gl.h>
- #include "ShaderRect.h"
- #include "ShaderYUV420.h"
- /**
- * @brief
- *
- */
- class PlayerGLWidget : public QOpenGLWidget, protected QOpenGLFunctions_3_3_Core
- {
- Q_OBJECT
- public:
- explicit PlayerGLWidget(QWidget *parent = nullptr);
- ~PlayerGLWidget();
- /* 显示RGBA图片 */
- void showOneRGBAImage(const QImage& image);
- /* 显示一张YUV420的图片 */
- void showOneYUV420Image(const Image_YUV420P& yuvData);
-
- void testShowYUV420Image(const QImage& image);
- private:
- /* 初始化RGBA的Shader */
- void initShaderRGBA();
- /* 初始化YUV420的Shader */
- void initShaderYUV420();
-
- protected:
- void initializeGL() override;
- void resizeGL(int w, int h) override;
- void paintGL() override;
- private:
- // GLuint m_VAO1 = 0; // 顶点数组对象的ID
- bool m_isInit = false; // 是否初始化过OpenGL
- ShaderBase* m_shaderCurr = nullptr; /* 当前使用的着色器对象 */
- ShaderRect* m_shaderRGBA = nullptr; /* 显示RGBA图片的着色器对象 */
- ShaderYUV420* m_shaderYUV420 = nullptr; /* 显示YUV420图片的着色器对象 */
- };
- #endif /* PLAYEROPENGLWIDGET_H */
|