#ifndef PLAYEROPENGLWIDGET_H #define PLAYEROPENGLWIDGET_H #include #include #include #include #include "PlayerGlobalInfo.h" /** * @brief * */ class PlayerGLWidget : public QOpenGLWidget , public QOpenGLFunctions { Q_OBJECT enum { Left_Bottom_X, Left_Bottom_Y, Right_Bottom_X, Right_Bottom_Y, Right_Top_X, Right_Top_Y, Left_Top_X, Left_Top_Y, Pos_Max }; public: explicit PlayerGLWidget(QWidget *parent = nullptr); ~PlayerGLWidget(); /* 刷新一帧 */ void updateFrame(Image_YUV420& image); /* 刷新一帧QImage */ void updateFrame(Image_QImage& image); private: protected: void initializeGL() override; void resizeGL(int w, int h) override; void paintGL() override; // void setImage(const QImage &image); private: uchar* imageData_; //纹理显示的数据源 QSize imageSize_; //图片尺寸 QSize Ortho2DSize_; //窗口尺寸 QOpenGLTexture* texture_; GLuint textureId_; //纹理对象ID int vertexPos_[Pos_Max]; //窗口坐标 float texturePos_[Pos_Max]; //纹理坐标 Image_QImage m_image; }; #endif /* PLAYEROPENGLWIDGET_H */