PlayerGLWidget.h 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. #ifndef PLAYEROPENGLWIDGET_H
  2. #define PLAYEROPENGLWIDGET_H
  3. #include <QOpenGLWidget>
  4. // #include <QOpenGLFunctions> // 添加此行
  5. #include <QOpenGLFunctions_3_3_Core> // 添加此行
  6. #include <QOpenGLTexture>
  7. #include "PlayerGlobalInfo.h"
  8. /**
  9. * @brief
  10. *
  11. */
  12. class PlayerGLWidget : public QOpenGLWidget, protected QOpenGLFunctions_3_3_Core // 修改此行
  13. {
  14. Q_OBJECT
  15. public:
  16. explicit PlayerGLWidget(QWidget *parent = nullptr);
  17. ~PlayerGLWidget();
  18. /* 设置一张图片,用于显示默认的图片 */
  19. void setImage(const QImage& image);
  20. /* 刷新一帧 */
  21. void updateFrame(Image_YUV420& image);
  22. /* 刷新一帧QImage */
  23. void updateFrame(Image_QImage& image);
  24. private:
  25. /* 转换成YUV420 */
  26. void convertQImageToYUV420(const QImage& image, Image_YUV420& yuv420);
  27. protected:
  28. void initializeGL() override;
  29. void resizeGL(int w, int h) override;
  30. void paintGL() override;
  31. private:
  32. Image_QImage m_image;
  33. Image_YUV420 m_YUV420;
  34. QByteArray m_yData;
  35. QByteArray m_uData;
  36. QByteArray m_vData;
  37. QSize m_imageSize;
  38. QOpenGLTexture* textureY_;
  39. QOpenGLTexture* textureU_;
  40. QOpenGLTexture* textureV_;
  41. GLuint textureIdY_;
  42. GLuint textureIdU_;
  43. GLuint textureIdV_;
  44. QSize Ortho2DSize_;
  45. GLuint shaderProgram;
  46. GLuint VAO, VBO, EBO;
  47. };
  48. #endif /* PLAYEROPENGLWIDGET_H */