+ Vector3 &normal = reinterpret_cast<GlState *>(user_data)->normal;
+ normal.x = x;
+ normal.y = y;
+ normal.z = z;
+}
+
+void GlState::glTexCoord1f(void *user_data, float s)
+{
+ glTexCoord4f(user_data, s, 0.0f, 0.0f, 1.0f);
+}
+
+void GlState::glTexCoord2f(void *user_data, float s, float t)
+{
+ glTexCoord4f(user_data, s, t, 0.0f, 1.0f);
+}
+
+void GlState::glTexCoord3f(void *user_data, float s, float t, float p)
+{
+ glTexCoord4f(user_data, s, t, p, 1.0f);
+}
+
+void GlState::glTexCoord4f(void *user_data, float s, float t, float p, float q)
+{
+ unsigned index = reinterpret_cast<GlState *>(user_data)->active_tex;
+ glMultiTexCoord4f(user_data, index, s, t, p, q);
+}
+
+void GlState::glMultiTexCoord4f(void *user_data, unsigned index, float s, float t, float p, float q)
+{
+ Vector4 &texcoord = reinterpret_cast<GlState *>(user_data)->texcoord[index];
+ texcoord.s = s;
+ texcoord.t = t;
+ texcoord.p = p;
+ texcoord.q = q;
+}
+
+// Vertex arrays
+
+ArrayState &GlState::get_attrib_array(unsigned index)
+{
+ map<unsigned, ArrayState>::iterator i = attrib_arrays.find(index);