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轴进行翻转了。
还是从帧调试开始吧,如图: