我目前正在尝试制作自定义顶点声明。
将位置,颜色和整数传递给效果的位置。我有问题确定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中的?)
答案 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对象的大小(这将是偏移量)。