package kha.graphics4; enum abstract VertexData(Int) { var Float32_1X = 0; var Float32_2X = 1; var Float32_3X = 2; var Float32_4X = 3; var Float32_4X4 = 4; var Int8_1X = 5; var UInt8_1X = 6; var Int8_1X_Normalized = 7; var UInt8_1X_Normalized = 8; var Int8_2X = 9; var UInt8_2X = 10; var Int8_2X_Normalized = 11; var UInt8_2X_Normalized = 12; var Int8_4X = 13; var UInt8_4X = 14; var Int8_4X_Normalized = 15; var UInt8_4X_Normalized = 16; var Int16_1X = 17; var UInt16_1X = 18; var Int16_1X_Normalized = 19; var UInt16_1X_Normalized = 20; var Int16_2X = 21; var UInt16_2X = 22; var Int16_2X_Normalized = 23; var UInt16_2X_Normalized = 24; var Int16_4X = 25; var UInt16_4X = 26; var Int16_4X_Normalized = 27; var UInt16_4X_Normalized = 28; var Int32_1X = 29; var UInt32_1X = 30; var Int32_2X = 31; var UInt32_2X = 32; var Int32_3X = 33; var UInt32_3X = 34; var Int32_4X = 35; var UInt32_4X = 36; // deprecated var Float1 = Float32_1X; var Float2 = Float32_2X; var Float3 = Float32_3X; var Float4 = Float32_4X; var Float4x4 = Float32_4X4; var Short2Norm = Int16_2X_Normalized; var Short4Norm = Int16_4X_Normalized; /** Return the element size of the given vertex data type in bytes. **/ public static inline function getStride(vertexData: VertexData): Int { return switch (vertexData) { case Float32_1X: 4 * 1; case Float32_2X: 4 * 2; case Float32_3X: 4 * 3; case Float32_4X: 4 * 4; case Float32_4X4: 4 * 4 * 4; case Int8_1X: 1; case UInt8_1X: 1; case Int8_1X_Normalized: 1; case UInt8_1X_Normalized: 1; case Int8_2X: 1 * 2; case UInt8_2X: 1 * 2; case Int8_2X_Normalized: 1 * 2; case UInt8_2X_Normalized: 1 * 2; case Int8_4X: 1 * 4; case UInt8_4X: 1 * 4; case Int8_4X_Normalized: 1 * 4; case UInt8_4X_Normalized: 1 * 4; case Int16_1X: 2 * 1; case UInt16_1X: 2 * 1; case Int16_1X_Normalized: 2 * 1; case UInt16_1X_Normalized: 2 * 1; case Int16_2X: 2 * 2; case UInt16_2X: 2 * 2; case Int16_2X_Normalized: 2 * 2; case UInt16_2X_Normalized: 2 * 2; case Int16_4X: 2 * 4; case UInt16_4X: 2 * 4; case Int16_4X_Normalized: 2 * 4; case UInt16_4X_Normalized: 2 * 4; case Int32_1X: 4 * 1; case UInt32_1X: 4 * 1; case Int32_2X: 4 * 2; case UInt32_2X: 4 * 2; case Int32_3X: 4 * 3; case UInt32_3X: 4 * 3; case Int32_4X: 4 * 4; case UInt32_4X: 4 * 4; } } }