In import_attrib(), use the from->Normalized flag to choose the right
authorBrian Paul <brian.paul@tungstengraphics.com>
Tue, 13 Jun 2006 17:06:44 +0000 (17:06 +0000)
committerBrian Paul <brian.paul@tungstengraphics.com>
Tue, 13 Jun 2006 17:06:44 +0000 (17:06 +0000)
translation function.
Before this fix the 'normalized' flag to glVertexAttribPointerARB() was ignored.

src/mesa/array_cache/ac_import.c

index deae44ab726532d41ae9ed38a522508a35a5e16a..3612a1e019bd7afed4489f4f5cff3311ec5abcba 100644 (file)
@@ -185,6 +185,9 @@ reset_edgeflag( GLcontext *ctx )
 }
 
 
+/**
+ * \param index  the generic vertex array number.
+ */
 static void
 reset_attrib( GLcontext *ctx, GLuint index )
 {
@@ -453,6 +456,9 @@ import_edgeflag( GLcontext *ctx, GLenum type, GLuint stride )
    ac->IsCached.EdgeFlag = GL_TRUE;
 }
 
+/**
+ * \param index  the generic vertex array number
+ */
 static void
 import_attrib( GLcontext *ctx, GLuint index, GLenum type, GLuint stride )
 {
@@ -469,13 +475,24 @@ import_attrib( GLcontext *ctx, GLuint index, GLenum type, GLuint stride )
    ASSERT(stride == 4*sizeof(GLfloat) || stride == 0);
    ASSERT(ac->count - ac->start < ctx->Const.MaxArrayLockSize);
 
-   _math_trans_4f( (GLfloat (*)[4]) to->Ptr,
-                  from->Ptr,
-                  from->StrideB,
-                  from->Type,
-                  from->Size,
-                  0,
-                  ac->count - ac->start);
+   if (from->Normalized) {
+      _math_trans_4fc( (GLfloat (*)[4]) to->Ptr,
+                      from->Ptr,
+                      from->StrideB,
+                      from->Type,
+                      from->Size,
+                      0,
+                      ac->count - ac->start);
+   }
+   else {
+      _math_trans_4f( (GLfloat (*)[4]) to->Ptr,
+                      from->Ptr,
+                      from->StrideB,
+                      from->Type,
+                      from->Size,
+                      0,
+                      ac->count - ac->start);
+   }
 
    to->Size = from->Size;
    to->StrideB = 4 * sizeof(GLfloat);
@@ -768,7 +785,10 @@ _ac_import_edgeflag( GLcontext *ctx,
    }
 }
 
-/* GL_NV_vertex_program */
+/**
+ * For GL_ARB/NV_vertex_program
+ * \param index  index of the vertex array, starting at zero.
+ */
 struct gl_client_array *
 _ac_import_attrib( GLcontext *ctx,
                    GLuint index,