12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455 |
- #ifndef PLAYEROPENGLWIDGET_H
- #define PLAYEROPENGLWIDGET_H
- #include <QOpenGLWidget>
- #include <QOpenGLFunctions>
- #include <QOpenGLShaderProgram>
- #include <QOpenGLTexture>
- #include <QTimer>
- #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<QVector3D> vertices;
- QVector<QVector2D> texCoords;
- QOpenGLShaderProgram program;
- QOpenGLTexture *texture;
- QMatrix4x4 projection;
- Image_QImage m_image;
- };
- #endif /* PLAYEROPENGLWIDGET_H */
|