首先清楚OpenGL中的常用几个函数作用:
(1)initializeGL() 初始化OpenGL函数
(2)resizeGL(int w, int h)调整窗口大小函数
(3)paintGL()绘制图像函数
1、paintGL()函数作调整
先定义模型、观察、投影3个矩阵。

   //1、定义的4*4的矩阵 模型 观察 投影矩阵QMatrix4x4 model;QMatrix4x4 view;QMatrix4x4 projection;/*----------按照时间对图片进行旋转----------*/QMatrix4x4 matrix;unsigned int time=QTime::currentTime().msec();//毫秒//matrix.translate(0.5,-0.5,0);//移动到该位置 z坐标不变//1、值 旋转后的矩阵 旋转角度-45度 往x轴进行旋转model.rotate(-45, 1.0f, 0.0f, 0.0f);//2、观察坐标 z轴网上移动3view.translate(0.0,0.0,-3);//3、角度45度 宽高比 远近值分别为0.1和100projection.perspective(45,(float)width()/height(),0.1,100);

效果如下:

顶点着色器和c文件代码部分作相应调整


2、顶点坐标改变
顶点坐标位置如下:

float vertices[] = { //坐标 3              纹理坐标 2-0.5f, -0.5f, -0.5f, 0.0f, 0.0f,0.5f, -0.5f, -0.5f, 1.0f, 0.0f,0.5f, 0.5f, -0.5f, 1.0f, 1.0f,0.5f, 0.5f, -0.5f, 1.0f, 1.0f,-0.5f, 0.5f, -0.5f, 0.0f, 1.0f,-0.5f, -0.5f, -0.5f, 0.0f, 0.0f,-0.5f, -0.5f, 0.5f, 0.0f, 0.0f,0.5f, -0.5f, 0.5f, 1.0f, 0.0f,0.5f, 0.5f, 0.5f, 1.0f, 1.0f,0.5f, 0.5f, 0.5f, 1.0f, 1.0f,-0.5f, 0.5f, 0.5f, 0.0f, 1.0f,-0.5f, -0.5f, 0.5f, 0.0f, 0.0f,-0.5f, 0.5f, 0.5f, 1.0f, 0.0f,-0.5f, 0.5f, -0.5f, 1.0f, 1.0f,-0.5f, -0.5f, -0.5f, 0.0f, 1.0f,-0.5f, -0.5f, -0.5f, 0.0f, 1.0f,-0.5f, -0.5f, 0.5f, 0.0f, 0.0f,-0.5f, 0.5f, 0.5f, 1.0f, 0.0f,0.5f, 0.5f, 0.5f, 1.0f, 0.0f,0.5f, 0.5f, -0.5f, 1.0f, 1.0f,0.5f, -0.5f, -0.5f, 0.0f, 1.0f,0.5f, -0.5f, -0.5f, 0.0f, 1.0f,0.5f, -0.5f, 0.5f, 0.0f, 0.0f,0.5f, 0.5f, 0.5f, 1.0f, 0.0f,-0.5f, -0.5f, -0.5f, 0.0f, 1.0f,0.5f, -0.5f, -0.5f, 1.0f, 1.0f,0.5f, -0.5f, 0.5f, 1.0f, 0.0f,0.5f, -0.5f, 0.5f, 1.0f, 0.0f,-0.5f, -0.5f, 0.5f, 0.0f, 0.0f,-0.5f, -0.5f, -0.5f, 0.0f, 1.0f,-0.5f, 0.5f, -0.5f, 0.0f, 1.0f,0.5f, 0.5f, -0.5f, 1.0f, 1.0f,0.5f, 0.5f, 0.5f, 1.0f, 0.0f,0.5f, 0.5f, 0.5f, 1.0f, 0.0f,-0.5f, 0.5f, 0.5f, 0.0f, 0.0f,-0.5f, 0.5f, -0.5f, 0.0f, 1.0f};

3、initializeGL()函数作调整
由于顶点坐标位置做了相应调整,所以初始化函数initializeGL()中的解析属性的函数glVertexAttribPointer()和glEnableVertexAttribArray()对应的参数需要作相应调整。比如占据的字节数3float,总的步长5float,还有对应的偏移量根据实际占用float数目作调整。

4、顶点着色器作调整
增加model、view、projection矩阵

5、片段着色器作调整

6、剪切坐标系不需要每一帧都更新projection
在initializeGL()函数中,增加对projection矩阵的初始化。

   QMatrix4x4 projection;//不需要每一帧都更新projection 剪切坐标系//3、角度45度 宽高比 远近值分别为0.1和100projection.perspective(45,(float)width()/height(),0.1,100);shaderProgram.setUniformValue("projection", projection);//projection单位矩阵


7、paintgl()函数中清空深度、颜色缓冲区域

8、根据时间 围绕x轴进行旋转

Qt opengl 图片实现3D效果相关推荐

  1. OpenGL(十八)——Qt OpenGL绘制一个3D世界

    OpenGL(十八)--Qt OpenGL绘制一个3D世界 一.说明 本篇介绍构建一个3D的世界. 二.简介 加载3D世界,并在其中漫游: 在这一课中,你将学会如何加载3D世界,并在3D世界中漫游. ...

  2. css3图片倾斜3D效果

    css3图片倾斜3D效果 这是一款非常炫酷图片3D倾斜动画,响应式的图片列表布局,鼠标悬停图片3D倾斜遮罩显示标题图标效果. 演示地址 下载地址

  3. Unity 2D图片的3D效果(1)——阴影

    项目为方便编辑地图,使用的是Unity自带的Tilemap功能.因为使用的是俯视视角,拼好第一个地图后发现2D图片展现的效果太平了,地面和障碍物很难分辨.所以才有了"把2d图片展现出3d效果 ...

  4. Qt OpenGL 加载3D世界,并在其中漫游

    这次教程中,我将教大家如何加载一个3D世界,并在3D世界中漫游.这相较于我们只能创造一个旋转的立方体或一群星星时有很大的进步了,当然这节课代码难度不低,但也不会很难,只要你跟着我慢慢一步一步来. 一个 ...

  5. 拜托,使用 Three.js 让二维图片具有 3D 效果超酷的

    前端瓶子君,关注公众号 回复算法,加入前端编程面试算法每日一题群 声明:本文涉及图文和模型素材仅用于个人学习.研究和欣赏,请勿二次修改.非法传播.转载.出版.商用.及进行其他获利行为. 背景 逛 sk ...

  6. 使用Three.js让二维图片呈现3D效果

    声明:本文涉及图文和模型素材仅用于个人学习.研究和欣赏,请勿二次修改.非法传播.转载.出版.商用.及进行其他获利行为. 场景编辑器(NSDT) 背景 逛 sketchfab 网站的时候我看到有很多二维 ...

  7. qt opengl 加载3d模型(obj格式)

    和一般c++程序加载3d模型一样,解读出数据内容,再用一个常规的着色程序就可以了. 我实现的效果如下,采用的免费模型 实现思路和前面的略有不同,就是把自己生成顶点.纹理.法线的过程变成从文件读取了. ...

  8. qt opengl lesson5 绘制3d立体旋转图形

    继续上一篇lesson,先将3d立体各个面写完,然后进行旋转,感觉每个面单独写比较费时,这大概是3d比较麻烦和难以理解的地方,需要建立良好的空间想象力. #---------------------- ...

  9. css使图片有3d效果,利用CSS3实现3D倾斜视差图片展示特效

    特效描述:利用CSS3实现 3D倾斜 视差图片 展示特效.利用CSS3实现3D倾斜视差图片展示特效 代码结构 1. HTML代码 Movies Popular Princess Mononoke Sp ...

最新文章

  1. Qt Style Sheets(qt样式表)
  2. windows 导出 oracle,windows 环境下oracle导入导出
  3. 计算机网络OSI架构详细图
  4. centos部署python flask_python 微服务框架之nameko实践
  5. spring cloud 概念
  6. FaceBook机器学习开源DL模块
  7. linux怎么把磁盘的东西拷贝,[Linux]如何拷贝已有数据磁盘,并将新的磁盘挂接到其他虚机上...
  8. 并发用户数的计算公式
  9. 【IT笔试面试题整理】给定二叉树,给每层生成一个链表
  10. C语言高级技术之--游戏属性修改器(背景故事)
  11. OpenVZ,Xen,KVM等:虚拟化解决方案
  12. 国外大神一张图学会python-学习Python不得不关注和学习的国外大神博客
  13. 将函数储存在模块中(2)
  14. ffmpeg转码参数
  15. Win7下Protel 99 SE SCH库文件和PCB库文件添加问题
  16. PTA 7-94 奇偶数判断
  17. ういんどみる公开了它用的游戏引擎,CatSystem2
  18. zk4元年拆解_耐克ZK5 Protro 科五复刻“减配”?可能你根本不懂曼巴心意!
  19. 为什么LED内不集成限流电阻呢?
  20. 本地ie打开html布局乱,网页设计:浏览器在兼容模式下布局全乱了 – 解决办法...

热门文章

  1. android lcm,Android的LCM知识点(4)
  2. 用RJS写的检测用户名和email是否存在
  3. 如何选择企业电脑加密软件,知道这几点一定不后悔!
  4. 10个谈话技巧让你平步青云
  5. 数学图形之单叶双曲面
  6. “我转行做测试开发的这一年多,月薪5K变成了24K”,中文系萌妹的自白
  7. 个人网站选择支付宝api
  8. 我的学习笔记002--asp.net中的路径mxx
  9. jquery 自动触发 标签的click()方法
  10. 网易云IM Flutter版本来啦,需要的拿去用。