Graphics 从Unity3D到DirectX的投影矩阵
我发现可以在OpenGL和DirectX之间执行转换,但在Unity3D中执行相同的操作时,它似乎不起作用 我希望这里有人知道OpenGL投影矩阵和Unity3D投影矩阵(以及视图矩阵!)之间的区别 我也试过用,但也没用 在UnyD3D中,我调用我自己的C++插件: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
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));