标题:基于QOpenGLWidget自适应大小显示图片
作者:729248122
日期:2018-12-29 14:20
内容:
一直想用OpenGL来显示图像或者做视频播放器的窗口,网上找了很久,都没有Qt这方面最新的靠谱的例子,大部分都是3D模型上贴图,要不就是各种报错,或者Qt的OpenGL版本不对,自己摸索了好久,终于搞定了,是在QT5.6.3MinGW下编译的,可自适应窗口大小,部分代码如下:
-----MyGLWidget.h------
#ifndef MYGLWIDGET_H
#define MYGLWIDGET_H
#include
#include
#include
#include
#include
#include
#include
#include
#include
class MyGLWidget : public QOpenGLWidget, protected QOpenGLFunctions
{
Q_OBJECT
public:
explicit MyGLWidget(QWidget *parent = 0);
signals:
public slots:
void initializeGL() Q_DECL_OVERRIDE;
void resizeGL(int w, int h) Q_DECL_OVERRIDE;
void paintGL() Q_DECL_OVERRIDE;
void setBackground(QImage image);
void initTextures();
void initShaders();
private:
QVector vertices;
QVector texCoords;
QOpenGLShaderProgram program;
QOpenGLTexture *texture;
QImage m_image;
QMatrix4x4 projection;
};
#endif // MYGLWIDGET_H
/////////////////////////////////////////////////////
-------MyGLWidget.cpp--------
#include "myglwidget.h
"#include
#include
MyGLWidget::MyGLWidget(QWidget *parent) : QOpenGLWidget(parent)
{}
void MyGLWidget::initTextures()
{
if(m_image.isNull())
{
qDebug(&quo ..
#1 [maxlogo 12-29 19:47]
这不就是纹理贴图而已吗
#2 [20091001753 12-30 02:25]
看这代码量,我还是用QLabel显示图片吧。。。
#3 [玖零儛 01-07 15:21]
QOpenGLWidget你重写下resizeGl(int w, int h) {glViewport(0, 0, w, h);}
不就可以自适应了么...