private UltimateVertexAttribute(string name, int componentCount, MeshAttribute.AttributeDataType dataType, int index, int bufferIndex)
 {
     Name           = name;
     ComponentCount = componentCount;
     DataType       = dataType;
     Index          = index;
     BufferIndex    = bufferIndex;
 }
Ejemplo n.º 2
0
        /// <summary>
        /// Gets the size in bytes for this data type.
        /// </summary>
        /// <param name="dataType">The data type for each of the attribute's components</param>
        /// <returns>The number of bytes used to store <paramref name="dataType"/></returns>
        public static int GetSizeInBytes(this MeshAttribute.AttributeDataType dataType)
        {
            switch (dataType)
            {
            case MeshAttribute.AttributeDataType.Float:
                return(sizeof(float));

            case MeshAttribute.AttributeDataType.Byte:
                return(sizeof(byte));

            case MeshAttribute.AttributeDataType.HalfFloat:
                return(2);

            case MeshAttribute.AttributeDataType.HalfFloat2:
                return(2);

            default:
                throw new NotImplementedException($"Size not implemented for {dataType}");
            }
        }
Ejemplo n.º 3
0
        private void WriteType(BinaryWriter writer, MeshAttribute.AttributeDataType type, float value)
        {
            switch (type)
            {
            case MeshAttribute.AttributeDataType.Float:
                writer.Write(value);
                break;

            case MeshAttribute.AttributeDataType.Byte:
                writer.Write((byte)value);
                break;

            case MeshAttribute.AttributeDataType.HalfFloat:
                writer.Write((ushort)FloatToHalfFloatBits(value));
                break;

            case MeshAttribute.AttributeDataType.HalfFloat2:
                writer.Write((ushort)FloatToHalfFloatBits(value));
                break;
            }
        }