在 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 对象中的每个顶点。
我们目前被指示绘制一个立方体,使用以下粗略结构来存储顶点:
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 对象中的每个顶点。