3D Computer Grapihcs Using OpenGL - 13 优化矩阵
2024-09-03 10:06:09
上节说过矩阵是可以结合的,而且相乘是按照和应用顺序相反的顺序进行的。我们之前初始化translationMatrix和rotationMatrix的时候,第一个参数都是使用的一个初始矩阵 glm::matrix4(),实际上我们可以对代码稍作优化,让初始化过程精简一些。
对比一下优化之前和优化之后的代码:
之前:
glm::mat4 projectionMatrix = glm::perspective(30.0f, ((float)width()) / height(), 0.1f, 10.0f);
glm::mat4 translationMatrix = glm::translate(glm::mat4(), glm::vec3(0.0f, 0.0f,-3.0f));
glm::mat4 rotationMatrix = glm::rotate(glm::mat4(), 54.0f, glm::vec3(1.0f, 0.0f, 0.0f)); glm::mat4 fullTransformMatrix = projectionMatrix * translationMatrix * rotationMatrix;
之后:
glm::mat4 projectionMatrix = glm::perspective(30.0f, ((float)width()) / height(), 0.1f, 10.0f);
glm::mat4 translationMatrix = glm::translate(projectionMatrix, glm::vec3(0.0f, 0.0f,-3.0f));
glm::mat4 fullTransformMatrix = glm::rotate(translationMatrix, 54.0f, glm::vec3(1.0f, 0.0f, 0.0f));
我们在初始化tranlationMatrix和fullTransformMatrix时的第一个变量都使用的是上一个变换矩阵,这样做的好处是最终减少了一个rotaitionMatrix的中间变量。
编译运行结果和上节一样。
最新文章
- 走进AngularJs 表单及表单验证
- ajax返回值中有回车换行、空格的解决方法分享
- matlab global 不能传向量/矩阵
- Spring.NET的AOP怎么玩
- js不是从上到下执行的吗?
- offsetWidth与scrollLeft
- JMeter学习-001-JMeter初识
- MyBaits的各种基本查询方式
- Windows Azure使用必读(转)
- 『奇葩问题集锦』function * (next){ 执行报错 SyntaxError: Unexpected token *
- Android常用错误解决汇总
- C#生成Code39(extend)条形码【非条形码字体】
- VLD 1.0 ReadMe翻译尝试
- Http 信息头
- 使用 hibernate 根据映射文件生成数据库表
- Ubuntu下安装并配置VS Code编译C++
- grid 布局
- sqlserver 导入excel
- WEB控件没有什么所谓好不好,而是用得好不好
- 将Unity导出的Eclipse工程转换为AndroidStudio工程
热门文章
- 使用lombok.Data编译时无法找到get/set方法
- [USACO13OPEN]照片Photo 题解
- springboot2.0国际化
- VSCode使用Remote-SSH远程服务器
- 084、Prometheus 到底NB在哪里?(2019-05-06 周一)
- Action实现prepareable接口后定义前置方法
- 关于在docker中配置elasticsearch容器的方法
- 在树莓派Zero上使用C#+Mono驱动TM1637四位数码管
- 【maven】IDEA:存在jar包,pom.xml文件没报错,但是Maven-Project-Dependencies有红线报错
- Qualcomm_Mobile_OpenCL.pdf 翻译-10-总结