Unity3D 神奇的GetGPUProjectionMatrix函数

Unity3D中的GetGPUProjectionMatrix函数用于处理DirectX (DX) 和OpenGL之间的坐标系统差异。由于DX以左上角为(0,0),而OpenGL以右下角为(0,0),且两者Z轴范围不同,此函数确保在不同渲染器间的兼容性。在帧调试中,当渲染平行光时,发现unity_MatrixVP的值与直接计算的相机投影矩阵和世界到相机矩阵乘积不同,必须使用GetGPUProjectionMatrix来获得正确结果。" 51941682,5100171,使用Spinner绑定键值对数据,"['Android开发', 'UI组件', '数据管理']
摘要由CSDN通过智能技术生成

UnityEngine.GL 中有一个函数GetGPUProjectionMatrix 具体可以参考官方说明文档。

这函数的作用,是用来处理DX 和OpenGL的坐标差异性的。

DX是以左上角为(0,0) OpenGL是以右下角为(0,0) 。

DX的Z范围是(0,1) GL是(-1,1)。

所以,unity3d引擎渲染的时候,根据使用的不同渲染器,通过该函数处理,即可,统一DX 和GL

        //
        // 摘要:
        //     ///
        //     Compute GPU projection matrix from camera's projection matrix.
        //     ///
        //
        // 参数:
        //   proj:
        //
        //   renderIntoTexture:
        public static Matrix4x4 GetGPUProjectionMatrix(Matrix4x4 proj, bool renderIntoTexture);

根据DX 和GL的差异性,就可以知道这个函数,当使用DX渲染的时候(底层统一用的是Opengl方式的)就是把DX 的Z轴,从-1,-1映射会(0,1)。y轴进行翻转了。


还是从帧调试开始吧,如图:

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值