/// <summary>
 /// Initializes a new instance of the <see cref="VertexInputLayout" /> with a single slot from a structure that is using <see cref="VertexElementAttribute"/>.
 /// </summary>
 /// <typeparam name="T">Type of a structure that is using <see cref="VertexElementAttribute" />.</typeparam>
 /// <param name="slot">The slot index in the input-assembler stage.</param>
 /// <returns>A new instance of <see cref="VertexInputLayout"/>.</returns>
 public static VertexInputLayout FromBuffer <T>(int slot, Buffer <T> buffer) where T : struct
 {
     return(New(VertexBufferLayout.New(slot, typeof(T))));
 }
 /// <summary>
 /// Initializes a new instance of the <see cref="VertexInputLayout" /> with a single slot.
 /// </summary>
 /// <param name="slot">The slot index in the input-assembler stage.</param>
 /// <param name="vertexElements">Description of vertex elements.</param>
 /// <returns>A new instance of <see cref="VertexInputLayout"/>.</returns>
 public static VertexInputLayout New(int slot, params VertexElement[] vertexElements)
 {
     return(New(VertexBufferLayout.New(slot, vertexElements)));
 }
 /// <summary>
 /// Initializes a new instance of the <see cref="VertexInputLayout" /> with a single slot from a structure that is using <see cref="VertexElementAttribute"/>.
 /// </summary>
 /// <param name="slot">The slot index in the input-assembler stage.</param>
 /// <param name="structType">Type of a structure that is using <see cref="VertexElementAttribute" />.</param>
 /// <returns>A new instance of <see cref="VertexInputLayout"/>.</returns>
 public static VertexInputLayout New(int slot, Type structType)
 {
     return(New(VertexBufferLayout.New(slot, structType)));
 }