fix GL_SGI_texture_colortable bugs
authorBrian Paul <brian.paul@tungstengraphics.com>
Wed, 23 Jul 2003 17:13:48 +0000 (17:13 +0000)
committerBrian Paul <brian.paul@tungstengraphics.com>
Wed, 23 Jul 2003 17:13:48 +0000 (17:13 +0000)
src/mesa/main/pixel.c
src/mesa/swrast/s_texture.c

index ce4be7eadc86a86e226a9cf7e88e8a567c6db64e..31ab8d7a72c1015cccf8f76ca2d1fb11a6b6c44a 100644 (file)
@@ -1489,6 +1489,9 @@ void _mesa_init_pixel( GLcontext * ctx )
    }
    ASSIGN_4V(ctx->Pixel.PostConvolutionScale, 1.0, 1.0, 1.0, 1.0);
    ASSIGN_4V(ctx->Pixel.PostConvolutionBias, 0.0, 0.0, 0.0, 0.0);
+   /* GL_SGI_texture_color_table */
+   ASSIGN_4V(ctx->Pixel.TextureColorTableScale, 1.0, 1.0, 1.0, 1.0);
+   ASSIGN_4V(ctx->Pixel.TextureColorTableBias, 0.0, 0.0, 0.0, 0.0);
 
    /* Pixel transfer */
    ctx->Pack.Alignment = 4;
index 1343b289fbd013eb3e80a5f6134368399bf580cf..cb124724624a00ab58d8bed52589f66363b3a4f2 100644 (file)
@@ -533,19 +533,19 @@ _swrast_texture_table_lookup(const struct gl_color_table *table,
          break;
       case GL_RGBA:
          /* replace RGBA with RGBA */
-         if (!table->FloatTable) {
+         if (table->FloatTable) {
             const GLfloat scale = (GLfloat) (table->Size - 1) / CHAN_MAXF;
-            const GLchan *lut = (const GLchan *) table->Table;
+            const GLfloat *lut = (const GLfloat *) table->Table;
             GLuint i;
             for (i = 0; i < n; i++) {
                GLint jR = IROUND((GLfloat) rgba[i][RCOMP] * scale);
                GLint jG = IROUND((GLfloat) rgba[i][GCOMP] * scale);
                GLint jB = IROUND((GLfloat) rgba[i][BCOMP] * scale);
                GLint jA = IROUND((GLfloat) rgba[i][ACOMP] * scale);
-               rgba[i][RCOMP] = lut[jR * 4 + 0];
-               rgba[i][GCOMP] = lut[jG * 4 + 1];
-               rgba[i][BCOMP] = lut[jB * 4 + 2];
-               rgba[i][ACOMP] = lut[jA * 4 + 3];
+               CLAMPED_FLOAT_TO_CHAN(rgba[i][RCOMP], lut[jR * 4 + 0]);
+               CLAMPED_FLOAT_TO_CHAN(rgba[i][GCOMP], lut[jG * 4 + 1]);
+               CLAMPED_FLOAT_TO_CHAN(rgba[i][BCOMP], lut[jB * 4 + 2]);
+               CLAMPED_FLOAT_TO_CHAN(rgba[i][ACOMP], lut[jA * 4 + 3]);
             }
          }
          else {