一、首先明白这几个函数作用:

  1. initializeGL():设置OpenGL资源和状态。只在第一次调用resizeGL()或paintGL()前被调用一次。
  2. resizeGL():设置OpenGL的视口,投影等。每次部件改变大小都会调用该函数。
  3. paintGL():渲染OpenGL场景。每当部件需要更新时会调用该函数。
  4. updateGL()功能是触发paintGL()。
    二、线性代数知识
    对顶点着色器上的坐标进行做变换的时,左边乘一个矩阵进行坐标变换。
#version 330 core
layout(location = 0) in vec3 aPos;  //顶点着色器 索引为0入口  位置
layout(location = 1) in vec3 aColor;//索引为1 aColor需要送出去
layout(location = 2) in vec2 aTexCord;//索引为2 aTexCord需要送出去 纹理顶点属性 vec2 2个float容器
out vec3 ourColor; //定义一个vec3对象把aColor传到ourColor
out vec2 TexCord; //定义一个vec2对象把aTexCord传到ouraTexCord
uniform mat4 theMatrix;//需要改变顶点位置 全局变量所以需要放在顶点着色器上
void main(){gl_Position = theMatrix*vec4(aPos.x, aPos.y, aPos.z, 1.0f); //传坐标ourColor=aColor; //传颜色TexCord=aTexCord;//传出纹理坐标 每一个点图片颜色和位置需要告诉片段着色器
}

三、本文设置的是根据时间进行旋转图片

   /*----------按照时间对图片进行旋转----------*/QMatrix4x4 matrix;unsigned int time=QTime::currentTime().msec();//毫秒matrix.rotate(time, 0.0f, 0.0f, 1.0f); //返回值是根据时间进行旋转后的矩阵

顶点着色器theMatrix和此处的matrix需要进行绑定,传递数据。

shaderProgram.setUniformValue("theMatrix", matrix);//绘画完两张图片后 对矩阵的值进行改变

此处的代码放到paintGL()函数当中。

四、定时器的应用
为啥放在此处,因为AXBOpenGLWidget类被创建对象的时候,就调用了AXBOpenGLWidget的构造函数,定时器就自动执行起来了。

/*-------------更新旋转后的图片------------------*/
void AXBOpenGLWidget::on_timeout()
{update();
}

update()触发paintGL()绘制图形函数实现对图片按照时间进行旋转效果

Qt opengl 实现图片的旋转相关推荐

  1. QT OpenGL图形放大缩小旋转移动

    由于要在OpenGL中实现放大缩小旋转和移动的效果,故要重写鼠标事件 放大缩小 重写void wheelEvent(QWheelEvent *event)函数 void zScale(float dz ...

  2. QT+OpenGL导入STL文件(二进制/ascll码格式),鼠标交互实现缩放旋转

    碎碎念 由于课设和大创涉及到了模型的旋转,因此专门去学习了模型的导入,也是废了不少心思,现在总结一下两种格式的简单导入,以及对stl模型两种格式的简单介绍.网上有很多大佬都有详细的解答,结尾附上链接: ...

  3. OpenGL(十二)——Qt OpenGL绕着坐标轴旋转多边形

    OpenGL(十二)--Qt OpenGL绕着坐标轴旋转多边形 一.旋转多边形 前两篇介绍了如何绘制多边形,并且给多边形进行上色.本篇介绍如何旋转多边形. 多边形的旋转,在类中增加两个变量来控制这两个 ...

  4. opengl png图片 qt_Qt学习:三维绘图之OpenGL和Qt的结合(转)

    OpenGL是绘制三维图形的标准API.Qt应用程序可以使用QtOpenGL模块绘制三维图形,该模块依赖于系统的OpenGL库.Qt OpenGL模块提供QGLWidget类,可以通过对它子类化,并使 ...

  5. Qt OpenGL 旋转、平移、缩放

    Qt OpenGL 设置旋转.平移.缩放.接上一篇文章: Qt OpenGL 纹理贴图 修改顶点着色器: #version 330 core layout (location = 0) in vec3 ...

  6. OpenGL(十六)——Qt OpenGL融合(将两张图片叠合成一张图片)

    OpenGL(十六)--Qt OpenGL融合(将两张图片叠合成一张图片) 一.场景 在常用的项目场景中,我们经常会遇到将两个图片合在一起变成一张图片,这时候就会有前后之分,特别是两个物体合在一起的时 ...

  7. OpenGL(十四)——Qt OpenGL纹理

    OpenGL(十四)--Qt OpenGL纹理 一.纹理 终于写到纹理的部分了: 纹理(Texture)的本质是一个2D图片(1D和3D),或者叫图形数据.只是在OpenGL中专业术语中称其为纹理. ...

  8. Qt+OpenGL实现三维地形显示

    因为项目需要,要用Qt+OpenGL显示三维地形,业务代码涉及保密,但是这种纯技术上的东西还是可以分享的. 话不多说,先看效果 这里我介绍一个简单的使用QT中的OpenGL实现三维地形显示的demo, ...

  9. Qt简易实现图片立体旋转效果

    前言 今年情人节刚好是过年期间,趁着过年有时间撸点代码,来个程序员的浪漫.去年七夕整了个抽奖的app,这次就整个有浪漫效果的程序就好了 经过在github上一番搜索,找到了一个相对满意的效果,这个效果 ...

最新文章

  1. R假设检验之Shapiro检验(正太分布判断)
  2. Android饼图Pie Chart
  3. 在phpmyadmin后台获取webshell方法汇总整理
  4. 虚拟机安装Linux(vmware + ubuntu)
  5. pipelineDB学习笔记-2. Stream (流)
  6. java 分层领域模型_Java领域模型 | 学步园
  7. Windows Mobile下使用Native C++开发日志类
  8. 十个优秀的在线音乐分享网站
  9. AndroidStudio实现在图片上涂鸦并记录涂鸦轨迹
  10. 【GANs学习笔记】(十三)BIGGAN
  11. c语言函数base,c中base的用法
  12. HSSFWorkbook 锁定部分单元格,或者锁定一个单元格
  13. 十一月 Z 星月度速览 | 个性化推荐技术解读、Mivus demo 服务框架切换缘解、精选好书推荐、AI 收藏夹……...
  14. 打火机与公主裙剧中的爱心
  15. 什么是overlay?如何定制overlay?
  16. Java程序编写 • 【第9章 程序:用定义类实现,吃货联盟订餐系统,新增商家和评论功能】
  17. JS 中禁用输入法
  18. 数学---之EMA (指数移动平均值)
  19. 王佩丰excel学习笔记(二):第三——六讲
  20. 数字化转型浪潮催生 API高速发展飚嘅

热门文章

  1. 【数据分享】2022年11月西南地区POI数据分享(重庆、四川、贵州、云南、西藏)
  2. gm/Id 设计方法
  3. 如何为服务器配置路由协议,服务器如何配置路由
  4. 案例九:实现输出1~10中非4的倍数的数字。
  5. 成功解决ValueError: pos_label=1 is not a valid label: array([‘0‘, ‘1‘], dtype=‘<U1‘)
  6. 如何用DirectShow替代付费的摄像头SDK
  7. 用MFC做漂亮界面之美化对话框
  8. 区块链+金融潜力有多大?透视这30家金融机构的布局!
  9. OpenGL ES EGL eglQueryContext
  10. 写博客能月入10K?