在Qt下使用可编程管线编写OpenGL的流程是怎样的呢? 下面演示了Qt下使用可编程管线的基本代码:(绘制三个不同的三角形,并做些旋转变换)
在Qt中,我们从QGLWidget继承,来实现OpenGL的一些绘制,主要实现其中的initializeGL(), paintGL()以及resizeGL()三个方法,基本声明如下:
#ifndef MYGLWIDGET_H
#define MYGLWIDGET_H
#include <QGLWidget>
#include <QGLShaderProgram>
#include <QVector>
#include <QVector3D>
#include <QVector4D>
#include <QMatrix4x4>
#include <QTime>
#include <QTimer>
class MyGLWidget : public QGLWidget
{
Q_OBJECT
public:
explicit MyGLWidget(QGLWidget *parent = 0);
protected:
void initializeGL();
void paintGL();
void resizeGL(int w, int h);
private:
void drawTriangle(const QVector<QVector4D> &colors);
QGLShaderProgram program;
QVector<QVector3D> vertices;
QVector<QVector4D> colors1; //三角的颜色
QVector<QVector4D> colors2;
QVector<QVector4D> colors3;
int mMVPMatrixHandle; //MVP矩阵绑定到Shader中的位置
int mPositionHandle; //Shader中的顶点位置绑定
int mColorHandle; //Shader中颜色uniform变量的绑定位置
QMatrix4x4 mModelMatrix;//模型矩阵
QMatrix4x4 mViewMatrix; //视图矩阵
QMatrix4x4 mProjectionMatrix; //投影矩阵
QMatrix4x4 mMVPMatrix; //MVP矩阵
int frames; //统计帧率
QTime time;
QTimer *timer;
};
#endif // MYGLWIDGET_H
与固定管线

本文介绍了在Qt下利用可编程管线进行OpenGL编程的方法,通过实现QGLWidget的initializeGL(), paintGL()和resizeGL()函数,展示了如何绘制并变换三角形的基本代码。"
109397988,9117202,DRANet:轻量级场景分割的双关系感知注意力网络,"['深度学习', '计算机视觉', '图像分割', '注意力模型', '神经网络']
最低0.47元/天 解锁文章
32

被折叠的 条评论
为什么被折叠?



