1.7.2 练习

一、projecrion函数

题目:projecrion函数中的第一个参数fov和第二个参数ratio参数进行实验。看能否搞懂它们是如何影响透视平截头体的。

  • 当ratio不变,fov值变大,显示的物体会变小;
  • 当fov不变,radio值变大,物体会变窄; radio值变小,物体会变扁。

二、位移观察矩阵

题目:将观察矩阵在各个方向上进行位移,来看看场景是如何改变的。注意把观察矩阵当成摄像机对象。

//观察矩阵
QMatrix4x4 view; //创建单位矩阵
view.translate(0.0f, 0.0f, -3.0f); //摄像机的位置是(0.0f, 0.0f, 0.0f),设置物体在摄像机z轴的3.0f处

上面代码中translate函数是从摄像机的视角进行设置的,如物体想要沿x向右移动1.0f,实际是在摄像机的视角是物体沿x向左移动1.0f,代码设置为:

view.translate(-1.0f, 0.0f, 0.0f);

三、部分箱子旋转

题目:使用模型矩阵只让是3倍数的箱子旋转(以及第1个箱子),而让剩下的箱子保持静止

更改paintGL()函数如下,对需要进行旋转的箱子进行判断

void MyOpenGLWidget::paintGL()
{glClearColor(0.2f, 0.3f, 0.3f, 1.0f); //设置墨绿色背景glEnable(GL_DEPTH_TEST); //打开深度缓冲区glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); //清空unsigned int time = QTime::currentTime().msec();//模型矩阵QMatrix4x4 model; //创建单位矩阵model.rotate(time, 1.0f, 0.0f, 0.0f); //绕x轴旋转m_shaderProgram.setUniformValue("model", model); //传给顶点着色器//观察矩阵QMatrix4x4 view; //创建单位矩阵view.translate(0.0f, 0.0f, -3.0f); //移动m_shaderProgram.setUniformValue("view", view);//投影矩阵QMatrix4x4 projection; //创建单位矩阵projection.perspective(45.0f, (float)width()/height(), 0.1f, 100.0f); //透视投影m_shaderProgram.setUniformValue("projection", projection);//绘制m_shaderProgram.bind(); //激活程序对象glBindVertexArray(VAO); //绑定VAOm_textureWall->bind(0); //绑定激活纹理单元0m_textureSmile->bind(1); //绑定激活纹理单元1m_textureSmall->bind(2); //绑定激活纹理单元2int i = 0;foreach(auto item, cubePositions){//模型矩阵QMatrix4x4 model; //创建单位矩阵model.translate(item); //移动if(i % 3 == 0){model.rotate(time, 1.0f, 1.f, 0.0f); //绕向量(1.0f, 1.f, 0.0f)旋转}i++;m_shaderProgram.setUniformValue("model", model); //传给顶点着色器glDrawArrays(GL_TRIANGLES, 0, 36); //绘图}
}

运行结果如下,红框中的四个箱子会旋转:

注:观看OpenGL中文官网(https://learnopengl-cn.github.io/)和阿西拜的现代OpenGL入门(https://ke.qq.com/course/3999604#term_id=104150693)学习OpenGL

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/776747.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

机器学习:探索数据中的模式与智能

文章目录 导言介绍:机器学习的定义和重要性发展历程:从概念到现实应用 基础概念机器学习的基本原理监督学习、无监督学习和强化学习的区别与应用1.监督学习2.无监督学习3.强化学习 常见的机器学习任务和应用领域 结语 导言 当代科技领域中最为引人注目的…

git reset版本回退后悔药(图文例子)

目录 版本回退前期测试样例准备git reset --soft 不撤销add,撤销commit,保留修改git reset --mixed 或 git reset () 撤销add,撤销commit,保存修改git reset --hard 撤销add,撤销commit,不保存修改git reset --merge 取消合并git reset --keep 不撤销add,撤销commit,根据情况判…

链表队列LinkQueue

入队:往尾巴上放 1.先定义一个新节点,指针置空 2. 连接 3. 移动尾指针 出队:从头部出队 1. 定义一个temp指针 2. head指针指向下一个 3. 通过free 释放temp指针所指 4. 若指完后,head所指为NULL,则把尾指…

Excel·VBA数组平均分组问题

看到一个帖子《excel吧-数据分组问题》,对一组数据分成4组,使每组的和值相近 上一篇文章《ExcelVBA数组分组问题》,解决了这个帖子问题的第1步,即获取所有数组分组形式的问题 接下来要获取分组和值最相近的一组,只需计…

Nginx官方镜像Dockerfile浅析

目录 Dockerfile获取 dfimage逆向获取 Nginx官网获取 Dockerfile分析 启动命令分析 Docker 容器入口点脚本分析 exec "$" exec 命令 "$" 参数 总结 在云原生技术快速发展的今天,Docker 作为容器技术的代表,为软件的打包、…

RHCE:请给openlab搭建web

1.关闭所有安全软件已经防火墙 2.安装所需软件 3.在Windows 文件中进行DNS映射 C:\Windows\System32\drivers\etc\hosts 文件进 行DNS 映射 4.创建www.openlab.com网站 5.创建教学资料子网站 6.创建学生信息子网站 进行验证 7.创建缴费子网站

Advisor 被重复代理问题排查

问题场景 项目中存在多个 AbstractAdvisorAutoProxyCreator 且其持有的 Advisor Bean 重复 问题复现 相关代码 ResponseBodyRequiresPermissions(PermissionConstant.****)GetMapping(value "/query****.json", name "")public List<***> query…

HCIP(GRE MGRE)DSVPN等综合实验

要求&#xff1a; 1、r5为isp&#xff0c;只能进行ip地址的配置&#xff0c;其所有ip地址均为共有ip地址 2、r1和r5使用ppp的PAP认证&#xff0c;r5为主认证方 r2和r5之间使用ppp的chap认证&#xff0c;r5为主认证方 r3和r5之间使用HDLC封装 3、r1 r2 r3构建一个MGRE环境…

Ruoyi-Cloud-Plus_使用Docker部署分布式微服务系统---SpringCloud工作笔记200

1.首先安装docker: 如果以前安装过首先执行: yum remove docker docker-client docker-client-latest docker-common docker-latest docker-latest-logrotate docker-logrotate docker-selinux docker-engine-selinux docker-engine 去卸载docker 2.安装dokcer需要的工具包…

【CASS精品教程】CASS添加标准图幅(50×50cm+50×40cm)

大比例尺地形图图幅一般分为正方形和矩形分幅两种,本文讲解CASS中添加标准图幅(5050cm、5040cm)的方法。 文章目录 一、CASS参数配置二、添加标准图幅(5050cm)三、添加标准图幅(5040cm)打开基于CASS自带案例数据study.dat绘制好的地形图study.dwg,如下图所示,下面来演示两种…

Numpy 初体验

文章目录 第1关&#xff1a;Numpy 创建数组第2关&#xff1a;Numpy 数组的基本运算第3关&#xff1a;Numpy 数组的切片与索引第4关&#xff1a;Numpy 数组的堆叠第5关&#xff1a;Numpy 的拆分 第1关&#xff1a;Numpy 创建数组 编程要求 本关的任务是&#xff0c;补全右侧编辑…

MySQL的主从复制和读写分离

目录 一、MySQL的主从复制 1、MySQL主从复制的原理 1.1 MySQL的复制类型 1.2 MySQL主从复制的工作过程 1.3 MySQL主从复制延迟 1.3.1 原因 1.3.2 解决方案 2、搭建MySQL的主从复制 实验环境 实验前提 ①Mysql主从服务器时间同步 ②主服务器的mysql配置 ③从服务器的…

Linux下javaweb项目部署

javaweb项目部署测试 测试环境&#xff1a;centos7 下载安装jdk rpm -ivh jdk-8u131-linux-x64.rpm 下载安装MySQL wget https://downloads.mysql.com/archives/get/p/23/file/mysql-community-server-5.7.33-1.el7.x86_64.rpm https://downloads.mysql.com/archives/get/p…

AI预测福彩3D第19弹【2024年3月27日预测--第5套算法开始计算第1次测试】

今天早上&#xff0c;突然做了一个大胆的决定&#xff0c;直接用新的算法来搞4码定位&#xff0c;新的算法融合了冷温热的趋势分析&#xff0c;让我自己搭建的AI深度学习模型来预测相关号码的冷温热走势&#xff0c;并赋予相关权重&#xff0c;然后通过权重来进行打分排名。当然…

9.HelloWorld案例常见问题

文章目录 一、BUG二、BUG的解决三、HelloWorld常见问题 一、BUG BUG&#xff08;小甲虫&#xff09;。计算机刚开始出现的时候&#xff0c;因为体积比较大&#xff0c;一些小虫子很容易转进去。有一天有一只蟑螂钻到了计算机当中&#xff0c;从而导致计算机不能正常运行&#…

vue3服务端渲染警告解决----DefinePlugin

Bundler 构建功能标志 有关 vuejs.org 的详细参考 esm-bundlerVue 的构建公开了可以在编译时覆盖的全局特性标志&#xff1a; __VUE_OPTIONS_API__ 违约&#xff1a;true启用/禁用选项 API 支持 __VUE_PROD_DEVTOOLS__ 违约&#xff1a;false在生产环境中启用/禁用 devtools 支…

2024/3/27打卡更小的数(十四届蓝桥杯)——区间DP

目录 题目 思路 代码 题目 思路 题目说求数组某个区间中的数进行翻转&#xff0c;由于区间选择多&#xff0c;首先想到DP问题。 第一版想到的方法&#xff08;错误的&#xff09;&#xff0c;当进行状态计算的时候&#xff0c;无法判定区间是否翻转后满足要求&#xff0c;…

c++|string模拟实现

目录 一、string.h 二、string.cpp 三、Test.cpp 对string的各种接口进行一个简易版的模拟实现&#xff0c;在模拟实现完之后对string的底层实现有了进一步的理解&#xff0c;了解大佬的编程写法思路。也算是对string有了一个小总结。 一、string.h 接口的声明。放在.h文件中…

MySQL安装和配置(超详细)

&#x1f468;‍&#x1f4bb;作者简介&#xff1a;&#x1f468;&#x1f3fb;‍&#x1f393;告别&#xff0c;今天 &#x1f4d4;高质量专栏 &#xff1a;☕java趣味之旅 欢迎&#x1f64f;点赞&#x1f5e3;️评论&#x1f4e5;收藏&#x1f493;关注 &#x1f496;衷心的希…

武汉星起航公司助力零经验新手卖家征战亚马逊跨境电商市场

在数字化浪潮的推动下&#xff0c;亚马逊跨境电商行业正逐渐成为众多创业者和企业家们的新战场。然而&#xff0c;对于零经验的新手卖家而言&#xff0c;这片广袤的电商海洋无疑充满了未知与挑战。在这个关键时刻&#xff0c;武汉星起航公司以其专业的服务和深厚的行业积累&…