改自:https://blog.csdn.net/yl409519139/article/details/85338581
我要实现qimage实时显示,上面的只有初始化,后面就没变化了,通过摸索实现功能,可能不是最优的:
void MyGLWidget::setBackground(QImage image) { //qDebug("setBackground"); m_image = image; if(texture != nullptr){ texture->destroy(); texture->create(); texture->setSize(image.width(),image.height(),1); texture->setData(image); } update(); } void MyGLWidget::paintGL() { glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); //清除屏幕缓存和深度缓冲 texture->bind(); //绑定纹理 QMatrix4x4 matrix; matrix.translate(0.0, 0.0, -5.0); //矩阵变换 program.enableAttributeArray(0); program.enableAttributeArray(1); program.setAttributeArray(0, vertices.constData()); program.setAttributeArray(1, texCoords.constData()); program.setUniformValue("texture", 0); glDrawArrays(GL_TRIANGLE_STRIP, 0, 4); texture->release(); // 加这句 qDebug("paint"); }