17 template <
typename MemberType>
18 struct DtAttributeType;
21 struct DtAttributeType<float>
24 enum { value = GL_FLOAT };
27 struct DtAttributeType<float[2]>
30 enum { value = GL_FLOAT };
33 struct DtAttributeType<float[3]>
36 enum { value = GL_FLOAT };
39 struct DtAttributeType<float[4]>
42 enum { value = GL_FLOAT };
46 struct DtAttributeType<int>
49 enum { value = GL_INT };
52 struct DtAttributeType<int[2]>
55 enum { value = GL_INT };
58 struct DtAttributeType<int[3]>
61 enum { value = GL_INT };
64 struct DtAttributeType<int[4]>
67 enum { value = GL_INT };
71 struct DtAttributeType<unsigned int>
74 enum { value = GL_UNSIGNED_INT };
77 struct DtAttributeType<unsigned int[2]>
80 enum { value = GL_UNSIGNED_INT };
83 struct DtAttributeType<unsigned int[3]>
86 enum { value = GL_UNSIGNED_INT };
89 struct DtAttributeType<unsigned int[4]>
92 enum { value = GL_UNSIGNED_INT };
96 template <
typename VertexFormat>
101 template <
typename MemberType>
103 const VertexFormat* base,
const MemberType VertexFormat::* member)
106 reinterpret_cast<const GLvoid*>(&(base->*member)),
107 DtAttributeType<MemberType>::value,
108 DtAttributeType<MemberType>::size);