C# c/Monogame:绘制多边形基本体?

C# c/Monogame:绘制多边形基本体?,c#,monogame,C#,Monogame,我想画一个纯色的多边形。我得到了一个二维向量的向量,它的顺序是,从v0到v1到v2有一条边到。。。从vn到v0 这样一个原语存在吗?这要归功于斯特凡·阿加特森,因为这个答案的代码是基于这个原语的 要将顶点描述为边而不是三角形,可以使用PrimitiveType.LineStrip而不是PrimitiveType.TriangelList,因为每个顶点只使用一次,所以还必须调整索引和计数 BasicEffect basicEffect = new BasicEffect(device); basi

我想画一个纯色的多边形。我得到了一个二维向量的向量,它的顺序是,从v0到v1到v2有一条边到。。。从vn到v0


这样一个原语存在吗?

这要归功于斯特凡·阿加特森,因为这个答案的代码是基于这个原语的

要将顶点描述为边而不是三角形,可以使用PrimitiveType.LineStrip而不是PrimitiveType.TriangelList,因为每个顶点只使用一次,所以还必须调整索引和计数

BasicEffect basicEffect = new BasicEffect(device);
basicEffect.Texture = myTexture;
basicEffect.TextureEnabled = true;

VertexPositionTexture[] vert = new VertexPositionTexture[4];
vert[0].Position = new Vector3(0, 0, 0); //These connect in order
vert[1].Position = new Vector3(100, 0, 0);
vert[2].Position = new Vector3(100, 100, 0);
vert[3].Position = new Vector3(0, 100, 0);

vert[0].TextureCoordinate = new Vector2(0, 0);
vert[1].TextureCoordinate = new Vector2(1, 0);
vert[2].TextureCoordinate = new Vector2(1, 1);
vert[3].TextureCoordinate = new Vector2(0, 1);

short[] ind = new short[n+1]; // the +1 is to close the shape
for(int i = 0; i < n; i++)
   ind[i] = i;
ind[n] = 0; // return to start to close.
然后在渲染循环中执行以下操作:

foreach (EffectPass effectPass in basicEffect.CurrentTechnique.Passes) 
{
    effectPass.Apply();
    device.DrawUserIndexedPrimitives<VertexPositionTexture>(
        PrimitiveType.LineStrip, vert, 0, vert.Length, ind, 0, ind.Length);
}

我不想将此标记为重复,但此答案对您有帮助吗?我这样做了,到处玩,但不知道如何改变形状,通过修改每个顶点的坐标,我得到了一个矩形或全屏的东西。