Qt QOpenGL概要

Qt目前已经对opengl支持很好了,大致涉及这几个类。见解如下:

数据:

  • QOpenGLBuffer,支持顶点数据(顶点坐标,顶点法向量,纹理坐标,颜色),顶点索引。可StreamDraw,即数据写死,也可DynamicDraw,即通过void write(int offset, const void *data, int count)方法更新。

  • QOpenGLTexture,纹理,常见的Target2D,Target3D,TargetCubeMap等。图像数据传入,过滤,三轴环绕。

  • QOpenGLFramebufferObject,帧缓存对象,比较der

着色器

  • QOpenGLShader,Vertex shader ,Fragment shader,指定着色器类型。

  • QOpenGLShaderProgram,着色器程序,添加着色器,编译,链接,顶点数据传入。

Ui

  • QOpenGLWidget,渲染的目标

Core

  • QOpenGLFunctions,对opengl方法的封装,保护继承即可。

  • QOpenGLContext,opengl上下文,可以理解为任务上下文。

Help

  • QVector3D系列,顶点数据,向量点乘,叉乘,单位化。

  • QMatrix4x4系列,mvp矩阵,平移,缩放,旋转,单位化。

  • math系列,三角函数,弧度角度转换

    // mode 矩阵 >> 本地矩阵
    // 本地变换
    QMatrix4x4 localT; localT.setToIdentity();// 平移
    QMatrix4x4 localR; localR.setToIdentity();// 旋转
    QMatrix4x4 localS; localS.setToIdentity();// 缩放
    // 本地坐标
    QMatrix4x4 localMat = localT * localR * localS;

    // view 矩阵 >> 全局矩阵
    QMatrix4x4 vMat;
    vMat.setToIdentity();
    vMat.lookAt(QVector3D(0,0,1.0f), QVector3D(0,0,0,), QVector3D(0,1,0));

    // pro 投影矩阵
    float w = 800.0f;
    float h = 600.0f;
    QMatrix4x4 pMat;
    pMat.setToIdentity();
    pMat.perspective(90.0f, w/h, 0.0f, 100.0f);

    QMatrix4x4 mvpMat = pMat * vMat * localMat;
    
    // 逆置矩阵
    mvpMat.transposed();
    // 逆矩阵
    bool canInvert = false;
    mvpMat.inverted(&canInvert);

 

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值