XNA 4.0自定义顶点声明

时间:2012-03-03 03:36:14

标签: c# xna

我目前正在尝试制作自定义顶点声明。

将位置,颜色和整数传递给效果的位置。我有问题确定VertexElementUsage的枚举将用于传递整数,以及在声明VertexElements时如何确定偏移?

public readonly static VertexDeclaration VertexDeclaration = new VertexDeclaration
{
    new VertexElement(0, VertexElementFormat.Vector3, VertexElementUsage.Position, 0),
    new VertexElement(12, VertexElementFormat.Color, VertexElementUsage.Color, 0),
    new VertexElement(?, VertexElementFormat.Byte4, ?, 0)
};

(注意最后一个VertexElement中的?)

1 个答案:

答案 0 :(得分:3)

它将是Vector2的大小+颜色的大小。 基本上这样想,
在普通数组中,只有一种类型的对象,因此可以知道要跳到下一个项目的数量。
这是不同的,因为它们都有不同的尺寸 使用sizeof()很好,所以它会像:

public readonly static VertexDeclaration VertexDeclaration = new VertexDeclaration
{
    new VertexElement(0, VertexElementFormat.Vector3, VertexElementUsage.Position, 0),
    new VertexElement(sizeof(Vector3), VertexElementFormat.Color, VertexElementUsage.Color, 0),
    new VertexElement(sizeof(Vector3)+sizeof(Color), VertexElementFormat.Byte4, ?, 0)
};

或类似。

否则,您可以找到颜色对象的大小,并将其添加到Vector3对象的大小(这将是偏移量)。