计算裁剪空间下的corners

 

public static Vector4[] GetProjectionCorners(RectTransform rectTransform, Camera uiCamera)
{
    var worldCorners = new Vector3[4]; // lt lb rb rt
    rectTransform.GetWorldCorners(worldCorners);

    var matrixMVP = uiCamera.projectionMatrix * uiCamera.worldToCameraMatrix; //左乘

    Vector4[] projectionCorners = new Vector4[4];

    for (int i = 0; i < 4; ++i)
    {
        Vector4 wsCorner = worldCorners[i];
        wsCorner.w = 1;
        projectionCorners[i] = matrixMVP * wsCorner; //左乘mvp矩阵
    }

    return projectionCorners; //裁剪空间下
}

 

posted @ 2023-01-28 23:09  yanghui01  阅读(10)  评论(0编辑  收藏  举报