18 template <
typename MemberType>
19 struct DtAttributeType;
22 struct DtAttributeType<float>
25 enum { value = GL_FLOAT };
28 struct DtAttributeType<float[2]>
31 enum { value = GL_FLOAT };
34 struct DtAttributeType<float[3]>
37 enum { value = GL_FLOAT };
40 struct DtAttributeType<float[4]>
43 enum { value = GL_FLOAT };
47 struct DtAttributeType<
int>
50 enum { value = GL_INT };
53 struct DtAttributeType<
int[2]>
56 enum { value = GL_INT };
59 struct DtAttributeType<
int[3]>
62 enum { value = GL_INT };
65 struct DtAttributeType<
int[4]>
68 enum { value = GL_INT };
72 struct DtAttributeType<unsigned
int>
75 enum { value = GL_UNSIGNED_INT };
78 struct DtAttributeType<unsigned
int[2]>
81 enum { value = GL_UNSIGNED_INT };
84 struct DtAttributeType<unsigned
int[3]>
87 enum { value = GL_UNSIGNED_INT };
90 struct DtAttributeType<unsigned
int[4]>
93 enum { value = GL_UNSIGNED_INT };
97 template <
typename VertexFormat>
102 template <
typename MemberType>
104 const VertexFormat* base,
const MemberType VertexFormat::* member)
107 reinterpret_cast<const GLvoid*>(&(base->*member)),
108 DtAttributeType<MemberType>::value,