PlayerGLWidget.h 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. #ifndef PLAYEROPENGLWIDGET_H
  2. #define PLAYEROPENGLWIDGET_H
  3. #include <QOpenGLWidget>
  4. #include <QOpenGLFunctions_3_3_Core>
  5. #include <GL/gl.h>
  6. #include "ShaderRect.h"
  7. #include "ShaderYUV420.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. /* 显示RGBA图片 */
  19. void showOneRGBAImage(const QImage& image);
  20. /* 显示一张YUV420的图片 */
  21. void showOneYUV420Image(const Image_YUV420P& yuvData);
  22. void testShowYUV420Image(const QImage& image);
  23. private:
  24. /* 初始化RGBA的Shader */
  25. void initShaderRGBA();
  26. /* 初始化YUV420的Shader */
  27. void initShaderYUV420();
  28. protected:
  29. void initializeGL() override;
  30. void resizeGL(int w, int h) override;
  31. void paintGL() override;
  32. private:
  33. // GLuint m_VAO1 = 0; // 顶点数组对象的ID
  34. bool m_isInit = false; // 是否初始化过OpenGL
  35. ShaderBase* m_shaderCurr = nullptr; /* 当前使用的着色器对象 */
  36. ShaderRect* m_shaderRGBA = nullptr; /* 显示RGBA图片的着色器对象 */
  37. ShaderYUV420* m_shaderYUV420 = nullptr; /* 显示YUV420图片的着色器对象 */
  38. };
  39. #endif /* PLAYEROPENGLWIDGET_H */