Qt下使用Shader绘制三角形

在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
与固定管线不同,变换中所需要的矩阵不再“免费”提供,需要
  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 7
    评论
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值