#ifndef PLAYEROPENGLWIDGET_H #define PLAYEROPENGLWIDGET_H #include #include #include #include #include #include "PlayerGlobalInfo.h" /** * @brief 可以播放,但是CPU占用率比纯CPU绘制还高 * */ class PlayerGLWidget : public QOpenGLWidget , public QOpenGLFunctions { Q_OBJECT public: explicit PlayerGLWidget(QWidget *parent = nullptr); ~PlayerGLWidget(); /* 刷新一帧 */ void updateFrame(Image_YUV420& image); /* 刷新一帧QImage */ void updateFrame(Image_QImage& image); private: void initShaders(); void initTextures(); protected: void initializeGL() override; void resizeGL(int w, int h) override; void paintGL() override; // void setImage(const QImage &image); private: QVector vertices; QVector texCoords; QOpenGLShaderProgram program; QOpenGLTexture *texture; QMatrix4x4 projection; Image_QImage m_image; }; #endif /* PLAYEROPENGLWIDGET_H */