/// <summary> /// Creates a new instance of <see cref="VertexElement"/>. /// </summary> /// <param name="semantic">The element's shader semantic.</param> /// <param name="semanticIndex">The element's shader semantic index</param> /// <param name="format">The element's format.</param> /// <param name="offset">The element's offset from the start of the vertex data.</param> public VertexElement(VertexSemantic semantic, int semanticIndex, VertexFormat format, int offset) { Offset = offset; SemanticName = semantic; SemanticIndex = semanticIndex; Format = format; }
private int IncrementSemanticIndex(VertexSemantic semantic) { int arrayIndex = (int)semantic; int arrayValue = _semanticIndexCount[arrayIndex]; _semanticIndexCount[arrayIndex] = arrayValue + 1; return(arrayValue); }
private static VertexElementUsage Convert(VertexSemantic semantic) { switch (semantic) { case VertexSemantic.Color: return(VertexElementUsage.Color); case VertexSemantic.Texture: return(VertexElementUsage.TextureCoordinate); case VertexSemantic.Position: return(VertexElementUsage.Position); default: throw new Exception($"Unsupported semantic: {semantic}"); } }
/// <summary> /// Deserializes the object and populates it from the input. /// </summary> /// <param name="input">Savable input</param> public void Read(ISavableReader input) { _vertexStride = input.ReadInt(); int count = input.ReadInt(); _elements = new VertexElement[count]; for (int i = 0; i < count; i++) { VertexSemantic semantic = input.ReadEnum <VertexSemantic>(); int semanticIndex = input.ReadInt(); VertexFormat format = input.ReadEnum <VertexFormat>(); int offset = input.ReadInt(); _elements[i] = new VertexElement(semantic, semanticIndex, format, offset); } GetHashCode(); }
internal static String ToD3DVertexSemantic(VertexSemantic semantic) { switch (semantic) { case VertexSemantic.Position: return("POSITION"); case VertexSemantic.Normal: return("NORMAL"); case VertexSemantic.Color: return("COLOR"); case VertexSemantic.TextureCoordinate: return("TEXCOORD"); case VertexSemantic.Binormal: return("BINORMAL"); case VertexSemantic.Tangent: return("TANGENT"); case VertexSemantic.BlendIndices: return("BLENDINDICES"); case VertexSemantic.BlendWeight: return("BLENDWEIGHT"); case VertexSemantic.Depth: return("DEPTH"); case VertexSemantic.Fog: return("FOG"); case VertexSemantic.PointSize: return("PSIZE"); default: throw new ArgumentException("Invalid vertex semantic"); } }
public VertexElementAttribute(VertexElementType elementType, VertexSemantic semantic, int usageIndex = 0) { VertexSchema = new VertexSchema(elementType, semantic, usageIndex); }
public VertexSchema(VertexElementType elementType, VertexSemantic semantic, int usageIndex = 0) { ElementType = elementType; Semantic = semantic; UsageIndex = usageIndex; }