上节说过矩阵是可以结合的,而且相乘是按照和应用顺序相反的顺序进行的。我们之前初始化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的中间变量。

编译运行结果和上节一样。

最新文章

  1. 走进AngularJs 表单及表单验证
  2. ajax返回值中有回车换行、空格的解决方法分享
  3. matlab global 不能传向量/矩阵
  4. Spring.NET的AOP怎么玩
  5. js不是从上到下执行的吗?
  6. offsetWidth与scrollLeft
  7. JMeter学习-001-JMeter初识
  8. MyBaits的各种基本查询方式
  9. Windows Azure使用必读(转)
  10. 『奇葩问题集锦』function * (next){ 执行报错 SyntaxError: Unexpected token *
  11. Android常用错误解决汇总
  12. C#生成Code39(extend)条形码【非条形码字体】
  13. VLD 1.0 ReadMe翻译尝试
  14. Http 信息头
  15. 使用 hibernate 根据映射文件生成数据库表
  16. Ubuntu下安装并配置VS Code编译C++
  17. grid 布局
  18. sqlserver 导入excel
  19. WEB控件没有什么所谓好不好,而是用得好不好
  20. 将Unity导出的Eclipse工程转换为AndroidStudio工程

热门文章

  1. 使用lombok.Data编译时无法找到get/set方法
  2. [USACO13OPEN]照片Photo 题解
  3. springboot2.0国际化
  4. VSCode使用Remote-SSH远程服务器
  5. 084、Prometheus 到底NB在哪里?(2019-05-06 周一)
  6. Action实现prepareable接口后定义前置方法
  7. 关于在docker中配置elasticsearch容器的方法
  8. 在树莓派Zero上使用C#+Mono驱动TM1637四位数码管
  9. 【maven】IDEA:存在jar包,pom.xml文件没报错,但是Maven-Project-Dependencies有红线报错
  10. Qualcomm_Mobile_OpenCL.pdf 翻译-10-总结