行矩阵列矩阵D3D&GL&U3D
void Start () {
//矩阵函数原型:Matrix4x4(Vector4 colum0, Vector4 colum1, Vector4 colum2, Vector4 colum3),这说明U3D使用列矩阵,同opengl
//因此矩阵是左乘的,DX是行矩阵,矩阵是右乘的。
//在DX中WVP矩阵组合为 W*V*P, 而GL中MVP矩阵组合为 P*V*M
Matrix4x4 tm = new Matrix4x4(new Vector4(, , , ), new Vector4(,,,),new Vector4(,,,),new Vector4(,,,));
Vector4 pt4 = new Vector4(, , , );
Vector3 pt3 = new Vector3(, , ); //var pt4t = pt4*tm; //编译出错,没有定义这种乘法,不支持右乘!
var pt4t = tm*pt4;
var pt4tt = tm.transpose*pt4; //矩阵转置-变为行矩阵
var pt3t = tm*pt3;
var pt3tt = tm.transpose*pt3; //实际是 tm.transpose * (0,0,0,0),U3D将vector3扩展为w为0,而不是像DX那样将w扩展为1 //总结:在U3D中,
//1,矩阵是列矩阵,必须左乘,U3D未定义矩阵右乘向量这种操作
//2,vector3(x,y,z)与矩阵相乘时,vector3被扩展为vector4(x,y,z,0)
Debug.Log(pt4t.x + "," + pt4t.y+","+ pt4t.z); //0,0,0
Debug.Log(pt4tt.x + "," + pt4tt.y+","+ pt4tt.z); //3,0,0
Debug.Log(pt3t.x + "," + pt3t.y+","+ pt3t.z); //0,0,0
Debug.Log(pt3tt.x + "," + pt3tt.y + "," + pt3tt.z);//0,0,0 //3,鉴于2的情况,U3D中操作顶点变换最好使用函数,如下
var tx = tm.transpose.MultiplyPoint(pt3t);
Debug.Log(tx.x + "," + tx.y + "," + tx.z); //3,0,0 }
行矩阵列矩阵D3D&GL&U3D的更多相关文章
- glm初试,关于行矩阵列矩阵问题
/*** * glm中矩阵是行优先存储的,这不同于opengl默认的以列优先存储的方式??,以下面矩阵mat为例 * 它是用四个行向量来模拟存储四个行:vec4 value[4],其中 * value ...
- 机器学习笔记 1 LMS和梯度下降(批梯度下降) 20170617
https://www.cnblogs.com/alexYuin/p/7039234.html # 概念 LMS(least mean square):(最小均方法)通过最小化均方误差来求最佳参数的方 ...
- OpenGL在图形管道中调用了什么用户模式图形驱动程序(UMD)?
OpenGL在图形管道中调用了什么用户模式图形驱动程序(UMD)? 图形硬件供应商,需要为显示适配器编,编写用户模式显示驱动程序.用户模式显示驱动程序,是由Microsoft Direct3D运行时加 ...
- 各大引擎矩阵的矩阵存储方式 ----行矩阵 or 列矩阵
OpenGL 里面的矩阵 float m[16]; OpenGL中的矩阵是这样的 m[0] m[4] m[8] m[12] m[1] m[5] m[9] m[13] m[2] m[6] m[10] ...
- U3D中可以直接使用GL!!!
https://blog.csdn.net/u013172864/article/details/78860624
- 统一D3D与OpenGL坐标系统
作者:游蓝海(http://blog.csdn.net/you_lan_hai) DirectX 3D与OpenGL坐标系统的差异性,给我们带来非常大的麻烦.让跨平台编程的新手非常困惑.近期在做一个跨 ...
- WhyDX9:翻写D3D红龙书中的程序
之前写过一套学习OpenGL的框架:WhyGL,即然有了GL那也应该再写个学习D3D的框架:WhyDX9.两个程序的架构相同,然后这个程序是将D3D红龙那本书的DEMO翻写了一遍.先将可执行程序发一下 ...
- U3D DrawCall优化手记
在最近,使用U3D开发的游戏核心部分功能即将完成,中间由于各种历史原因,导致项目存在比较大的问题,这些问题在最后,恐怕只能通过一次彻底的重构来解决 现在的游戏跑起来会有接近130-170个左右的Dra ...
- FFmpeg滤镜实现区域视频增强 及 D3D实现视频播放区的拉大缩小
1.区域视频增强 FFmpeg滤镜功能十分强大,用滤镜可以实现视频的区域增强功能. 用eq滤镜就可以实现亮度.对比度.饱和度等的常用视频增强功能. 推荐两篇写得不错的博文: (1)ffmpeg综合应用 ...
随机推荐
- Java]运算符优先级
https://blog.csdn.net/xiaoli_feng/article/details/4567184
- linux yum安装httpd后,启动service httpd start 报错解决方案
解决方案:
- 大数据hadoop与spark的区别
学习hadoop已经有很长一段时间了,好像是二三月份的时候朋友给了一个国产Hadoop发行版下载地址,因为还是在学习阶段就下载了一个三节点的学习版玩一下.在研究.学习hadoop的朋友可以去找一下看看 ...
- [转]Nginx反向代理和负载均衡部署指南
Nginx反向代理和负载均衡部署指南 1. 安装 1) 从Nginx官网下载页面(http://nginx.org/en/download.html)下载Nginx最 ...
- iPhone激活策略知识讲解:官方解锁和黑解
iPhone激活策略知识讲解:官方解锁和黑解 [复制链接] LEECHY 该用户从未签到 1372 XY豆 438 帖子 440 贡献 苹果花 积分 2250 发消息 电梯直达 楼主 发 ...
- WPF Demo3
<Window x:Class="Demo3.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/ ...
- Gradle Build速度加快终极方法(android studio)
Android Studio用起来越来越顺手,但是却发现Build的速度实在不敢恭维,在google和度娘了几把(....)之后,大体就是分配更高的内存,步骤:Setting-->搜索gradl ...
- ThinkJava-持有对象
11.3 添加一组元素 在java.util包中的Arrays和Collection类中都有很多实用方讼,可以在一个Collection中添加 一组元素.Arrays.asList()方法接受一个数组 ...
- Spring AOP的注解方式实现
spring也支持注解方式实现AOP,相对于配置文件方式,注解配置更加的轻量级,配置.修改更加方便. 1.开启AOP的注解配置方式 <!-- 开启aop属性注解 --> <aop:a ...
- Python- 解决PIP下载安装速度慢 让PIP源使用国内镜像,提升下载速度和安装成功率。
原文: https://www.cnblogs.com/microman/p/6107879.html 对于Python开发用户来讲,PIP安装软件包是家常便饭.但国外的源下载速度实在太慢,浪费时间. ...