#ifndef PLAYEROPENGLWIDGET_H #define PLAYEROPENGLWIDGET_H #include #include #include #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 */