在 C# 中创建用于 XNA 的二维顶点数组

Creating a 2D vertex array in C# for use with XNA

我们目前被指示绘制一个立方体,使用以下粗略结构来存储顶点:

VertexPositionTexture[] vert;
vert = new VertexPositionTexture[24];

但是,我认为如果我像这样将顶点分解成二维数组,组织起来会更好,操作也更容易:

public class Square
{
    public VertexPositionTexture[] vert
}

Square[] cubeSide;
cubeSide = new Square[6];

但是,我可以实例化 cubeSide,但不能实例化每个 Square 内的顶点。

我尝试在 Square class 中创建构造函数,但意识到我可以选择 new Square[]new Square(),但不能同时选择两者。我可以有一个有四个顶点的正方形,或者有一个顶点的大小正方形。

我已经在 class 广场本身尝试过 VertextPositionTexture[] vert = new VertexPositionTexture[4],但这也不起作用。

更让我困惑的是,上次我们学习 XNA 时,老师们向我们灌输了必须在开始时声明数组,以及我们想要的元素的确切数量。也就是说,你不能有 VertextPositionTexture[] vert,而应该有 VertextPositionTexture[4] vert。他们还非常坚定地认为,数组一旦设置,就永远不能改变其容量。

我应该如何使用二维顶点数组来表示立方体中的面?

我们被指示单独存储每个面,即具有 24 个顶点是一个设定要求。

VertexPositionTexture[4] Vertices; 不是有效的 C# 代码。在 Square class 中使用 VertexPositionTexture Vertices = new VertexPositionTexture[4]; 会起作用,但这只会实例化一个引用数组,而不是每个元素的对象。下面将帮助您开始构建顶点。

public class Square
{
    public VertexPositionTexture[] Vertices;

    public Square()
    {
        Vertices = new VertexPositionTexture[4];
    }
}
Square side = new Square[6];
for (int i = 0; i < 6; i++)
{
    side[i] = new Square();
}

side[0].Vertices[0] = new VertexPositionTexture(Vector3, Vector2);
....

现在您可以定义包含在单个 Square 对象中的每个顶点。