Graphics 从Unity3D到DirectX的投影矩阵

Graphics 从Unity3D到DirectX的投影矩阵,graphics,directx,unity3d,projection-matrix,Graphics,Directx,Unity3d,Projection Matrix,我发现可以在OpenGL和DirectX之间执行转换,但在Unity3D中执行相同的操作时,它似乎不起作用 我希望这里有人知道OpenGL投影矩阵和Unity3D投影矩阵(以及视图矩阵!)之间的区别 我也试过用,但也没用 在UnyD3D中,我调用我自己的C++插件: SetView(MatrixToArray(Camera.current.worldToCameraMatrix)); SetProjection(MatrixToArray(Matrix4x4.identity)); SetWor

我发现可以在OpenGL和DirectX之间执行转换,但在Unity3D中执行相同的操作时,它似乎不起作用

我希望这里有人知道OpenGL投影矩阵和Unity3D投影矩阵(以及视图矩阵!)之间的区别

我也试过用,但也没用

在UnyD3D中,我调用我自己的C++插件:

SetView(MatrixToArray(Camera.current.worldToCameraMatrix));
SetProjection(MatrixToArray(Matrix4x4.identity));
SetWorld(MatrixToArray(Camera.current.projectionMatrix));

private static float[] MatrixToArray(Matrix4x4 _matrix)
{
    float[] result = new float[16];

    for (int _row = 0; _row < 4; _row++)
    {
        for (int _col = 0; _col < 4; _col++)
        {
            result[_col + _row * 4] = _matrix[_row, _col];
        }
    }

    return result;
}
我知道东西是画出来的,因为在视图中使用单位矩阵和投影矩阵会给我一个三角形作为顶点:{0,0,0},{0,1,0},{1,0,0}。当我移动相机时,我也能看到各种各样的剪切效果

编辑-更多信息:
告诉我们它使用OpenGL表示法

编辑-示例项目:
如果有人想试用我的代码,我已经创建了一个,并将其上传到unity论坛。

似乎工作得很好,但似乎在我所有的匆忙和尝试中,我在world matrix中设置了投影矩阵

SetProjection(MatrixToArray(Matrix4x4.identity));
SetWorld(MatrixToArray(Camera.current.projectionMatrix));
应该是

SetWorld(MatrixToArray(Matrix4x4.identity));
SetProjection(MatrixToArray(Camera.current.projectionMatrix));
我在unity论坛上发布了更多关于

SetWorld(MatrixToArray(Matrix4x4.identity));
SetProjection(MatrixToArray(Camera.current.projectionMatrix));