namespace MoonWorks.Graphics
{
///
/// Specifies how to interpet vertex data in a buffer to be passed to the vertex shader.
///
public struct VertexInputState
{
public VertexBinding[] VertexBindings;
public VertexAttribute[] VertexAttributes;
public static readonly VertexInputState Empty = new VertexInputState
{
VertexBindings = System.Array.Empty(),
VertexAttributes = System.Array.Empty()
};
public VertexInputState(
VertexBinding vertexBinding,
VertexAttribute[] vertexAttributes
) {
VertexBindings = new VertexBinding[] { vertexBinding };
VertexAttributes = vertexAttributes;
}
public VertexInputState(
VertexBinding[] vertexBindings,
VertexAttribute[] vertexAttributes
) {
VertexBindings = vertexBindings;
VertexAttributes = vertexAttributes;
}
public static VertexInputState CreateSingleBinding() where T : unmanaged, IVertexType
{
return new VertexInputState(
VertexBinding.Create(),
default(T).Attributes()
);
}
}
}