+ bool integer = is_integer_attribute(a);
+ DataType type = get_attribute_source_type(a);
+ unsigned cc = get_attribute_component_count(a);
+
+ const Vector4 &value = (sem==0 ? vtx : attr[sem]);
+ if(type==UNSIGNED_BYTE)
+ store_attribute<uint8_t>(ptr, value, !integer, cc);
+ else if(type==BYTE)
+ store_attribute<int8_t>(ptr, value, !integer, cc);
+ else if(type==UNSIGNED_SHORT)
+ store_attribute<uint16_t>(ptr, value, !integer, cc);
+ else if(type==SHORT)
+ store_attribute<int16_t>(ptr, value, !integer, cc);
+ else if(type==UNSIGNED_INT)
+ store_attribute<uint32_t>(ptr, value, !integer, cc);
+ else if(type==INT)
+ store_attribute<int32_t>(ptr, value, !integer, cc);
+ else if(type==FLOAT)
+ store_attribute<float>(ptr, value, false, cc);