#include "PlayerGLWidget.h" PlayerGLWidget::PlayerGLWidget(QWidget *parent) : QOpenGLWidget(parent) { } PlayerGLWidget::~PlayerGLWidget() { } /* 刷新一帧 */ void PlayerGLWidget::updateFrame(Image_YUV420& image) { // yData = image.yData; // uData = image.uData; // vData = image.vData; update(); } /* 刷新一帧QImage */ void PlayerGLWidget::updateFrame(Image_QImage& image) { m_image = image; imageData_ = m_image.image.bits(); imageSize_.setWidth(m_image.width); imageSize_.setHeight(m_image.height); update(); } void PlayerGLWidget::initializeGL() { initializeOpenGLFunctions(); texture_ = new QOpenGLTexture(QOpenGLTexture::Target2D); texture_->create(); textureId_ = texture_->textureId(); glBindTexture(GL_TEXTURE_2D, textureId_); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); } void PlayerGLWidget::resizeGL(int w, int h) { Ortho2DSize_.setWidth(w); Ortho2DSize_.setHeight(h); glViewport(0,0, w, h); glMatrixMode(GL_PROJECTION); glLoadIdentity(); glOrtho(0, Ortho2DSize_.width(), Ortho2DSize_.height(), 0, -1, 1); glMatrixMode(GL_MODELVIEW); } void PlayerGLWidget::paintGL() { static bool initTextureFlag = false; // initializeOpenGLFunctions(); // 初始化 OpenGL 函数 glClearColor(1.0f, 1.0f, 1.0f, 1.0f); glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); if(imageData_ == nullptr){ return; } //QByteArray ba((const char*)imageData_,64); //qDebug() <