如何解决MonoGame VertexPositionColor绘制在错误的位置
我正在尝试为单人游戏制作渲染库,目前正在绘制2D多边形。但是,这些职位没有任何意义。以某种方式将它们绘制在(0,0,0),(100。0,0),(0,100,0)和(100,100,0)不会到达左上角坐标(0,0 )。我该如何解决?
我的代码:
BasicEffect basicEffect = new BasicEffect(GraphicsDevice);
VertexPositionColor[] vert = new VertexPositionColor[4];
vert[0].Position = new Vector3(0,0);
vert[1].Position = new Vector3(100,0);
vert[2].Position = new Vector3(0,100,0);
vert[3].Position = new Vector3(100,0);
short[] ind = new short[6];
ind[0] = 0;
ind[1] = 2;
ind[2] = 1;
ind[3] = 1;
ind[4] = 2;
ind[5] = 3;
foreach (EffectPass effectPass in basicEffect.CurrentTechnique.Passes)
{
effectPass.Apply();
GraphicsDevice.DrawUserIndexedPrimitives<VertexPositionColor>(
PrimitiveType.TriangleList,vert,vert.Length,ind,ind.Length / 3);
}
解决方法
MonoGame对2D和3D坐标系使用不同的原点。在2D中,(0,0)是左上角,Y朝屏幕底部增加。在3D中,(0,0)是屏幕的中心,并且坐标网格的工作方式与数学中的非常相似-如果“展平” z,请在数学中考虑4个象限轴。
您要在第I象限中进行绘制。如果要基于左上角进行绘制,则需要按-1/2视口宽度和+ 1 /来平移顶点2您的视口高度。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。