unity, unity中GL.MultMatrix的一个超级bug
GL.MultMatrix与OpenGL固定管线的glMultMatrix
函数行为并不一致,不是累乘,而是覆盖。
例如下面例子,本来预期是在(100,100)处画一个方块,而实际效果却是在(0,0)处画一个方块:
GL.PushMatrix();
GL.LoadPixelMatrix();
{
//mult matrix
Matrix4x4 mat1 = Matrix4x4.TRS(new Vector3(100,100,0),Quaternion.identity,Vector3.one);
GL.MultMatrix (mat1);
//mult matrix
Matrix4x4 mat2 = Matrix4x4.identity;
GL.MultMatrix (mat2);
//draw quad
{
float m_left = -20;
float m_top = -20;
float m_right = 20;
float m_bottom = 20;
Vector2 LU = new Vector2 (m_left, m_top);
Vector2 LD = new Vector2 (m_left, m_bottom);
Vector2 RU = new Vector2 (m_right, m_top);
Vector2 RD = new Vector2 (m_right, m_bottom);
uiMat.getInstance ().m_dftUIMat.SetPass (0);
GL.Begin (GL.QUADS);
GL.Color (Color.red);
GL.Vertex (new Vector3 (LU.x, LU.y, 0));
GL.Vertex (new Vector3 (LD.x, LD.y, 0));
GL.Vertex (new Vector3 (RD.x, RD.y, 0));
GL.Vertex (new Vector3 (RU.x, RU.y, 0));
GL.End ();
}
}
GL.PopMatrix();
参考:http://answers.unity3d.com/answers/1115934/view.html
最新文章
- 《你不知道的JavaScript》整理(一)——作用域、提升与闭包
- asp.net core 依赖注入问题
- Yii2 return redirect()
- crontab计划任务
- 用happen-before规则重新审视DCL(转)
- 我的小前端 (1)—— 安卓机和ios机的区别
- CodeForces 669C Little Artem and Matrix GNU
- HDU 5857 Median
- Oracle基础学习(二)v$session中Command的数字含义
- [python爬虫] Selenium常见元素定位方法和操作的学习介绍
- mysql连续聚合
- 如何使用 Excel 对象将 DataGridView 数据导出到 Excel
- SQL Server 中的回滚
- maven的动态打包功能
- P3975 [TJOI2015]弦论
- 求有向图的强连通分量个数 之 Kosaraju算法
- OpenCV——轮廓面积及长度计算
- 使用Jenkins自动编译我的.net 项目
- javaweb 安全传输签名机制
- exec操作文件描述符