C# XNA:与屏幕坐标匹配的正交投影

C# XNA:与屏幕坐标匹配的正交投影,c#,xna,projection,orthogonal,C#,Xna,Projection,Orthogonal,我使用XNA与SpriteBatch和自定义绘制的垂直平行。目标是使这两种技术具有相同的坐标系。 这意味着我需要一个映射到屏幕坐标的投影矩阵:(0,0)位于屏幕左上角,而宽度和高度由屏幕分辨率决定 Matrix.createOrthographic偏心(0,宽度,0,高度,-1,1) 工作正常,但中心位于左下角 Matrix.createOrthographic偏心(0,宽度,高度,0,-1,1) 根本不显示任何内容 尝试将第一个投影矩阵与平移和缩放y按-1组合也不会显示任何内容。按正值缩放效果

我使用XNA与SpriteBatch和自定义绘制的垂直平行。目标是使这两种技术具有相同的坐标系。 这意味着我需要一个映射到屏幕坐标的投影矩阵:(0,0)位于屏幕左上角,而宽度和高度由屏幕分辨率决定

Matrix.createOrthographic偏心(0,宽度,0,高度,-1,1)

工作正常,但中心位于左下角

Matrix.createOrthographic偏心(0,宽度,高度,0,-1,1)

根本不显示任何内容

尝试将第一个投影矩阵与平移和缩放y按-1组合也不会显示任何内容。按正值缩放效果也很好。但只要我按负值缩放,我就不会得到任何输出

有什么想法吗


PS:出于测试目的,我正在绘制远远超出屏幕坐标的顶点,因此如果翻译中出现错误,我至少会看到一些东西。

我使用此代码初始化我的2D相机以绘制线条,并使用基本的自定义效果来绘制

    Vector2 center;
    center.X = Game.GraphicsDevice.Viewport.Width * 0.5f;
    center.Y = Game.GraphicsDevice.Viewport.Height * 0.5f;

    Matrix View = Matrix.CreateLookAt( new Vector3( center, 0 ), new Vector3( center, 1 ), new Vector3( 0, -1, 0 ) );
    Matrix Projection = Matrix.CreateOrthographic( center.X * 2, center.Y * 2, -0.5f, 1 );
影响

uniform float4x4 xWorld;
uniform float4x4 xViewProjection;

void VS_Basico(in float4 inPos : POSITION,  in float4 inColor: COLOR0,  out float4      outPos: POSITION,    out float4 outColor:COLOR0 )
{
    float4 tmp = mul (inPos, xWorld);
    outPos = mul (tmp, xViewProjection);
    outColor = inColor; 
}

technique Lines
{
    pass Pass0
    {   
        VertexShader = compile vs_2_0 VS_Basico();
        FILLMODE = SOLID;
        CULLMODE = NONE;        
    }  
}

你应该在投影的同时使用一个视图矩阵。谢谢。也许我的一些实验也奏效了,但效果文件中似乎有一个bug阻止了它的绘制。当我用BasicEffect绘制原语时,一切都很好,谢谢!:)