fix GL_SGI_texture_colortable bugs

This commit is contained in:
Brian Paul
2003-07-23 17:13:48 +00:00
parent d19b5db5dc
commit 9f9bed9c8e
2 changed files with 9 additions and 6 deletions

View 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.PostConvolutionScale, 1.0, 1.0, 1.0, 1.0);
ASSIGN_4V(ctx->Pixel.PostConvolutionBias, 0.0, 0.0, 0.0, 0.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 */ /* Pixel transfer */
ctx->Pack.Alignment = 4; ctx->Pack.Alignment = 4;

View File

@@ -533,19 +533,19 @@ _swrast_texture_table_lookup(const struct gl_color_table *table,
break; break;
case GL_RGBA: case GL_RGBA:
/* replace RGBA with RGBA */ /* replace RGBA with RGBA */
if (!table->FloatTable) { if (table->FloatTable) {
const GLfloat scale = (GLfloat) (table->Size - 1) / CHAN_MAXF; 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; GLuint i;
for (i = 0; i < n; i++) { for (i = 0; i < n; i++) {
GLint jR = IROUND((GLfloat) rgba[i][RCOMP] * scale); GLint jR = IROUND((GLfloat) rgba[i][RCOMP] * scale);
GLint jG = IROUND((GLfloat) rgba[i][GCOMP] * scale); GLint jG = IROUND((GLfloat) rgba[i][GCOMP] * scale);
GLint jB = IROUND((GLfloat) rgba[i][BCOMP] * scale); GLint jB = IROUND((GLfloat) rgba[i][BCOMP] * scale);
GLint jA = IROUND((GLfloat) rgba[i][ACOMP] * scale); GLint jA = IROUND((GLfloat) rgba[i][ACOMP] * scale);
rgba[i][RCOMP] = lut[jR * 4 + 0]; CLAMPED_FLOAT_TO_CHAN(rgba[i][RCOMP], lut[jR * 4 + 0]);
rgba[i][GCOMP] = lut[jG * 4 + 1]; CLAMPED_FLOAT_TO_CHAN(rgba[i][GCOMP], lut[jG * 4 + 1]);
rgba[i][BCOMP] = lut[jB * 4 + 2]; CLAMPED_FLOAT_TO_CHAN(rgba[i][BCOMP], lut[jB * 4 + 2]);
rgba[i][ACOMP] = lut[jA * 4 + 3]; CLAMPED_FLOAT_TO_CHAN(rgba[i][ACOMP], lut[jA * 4 + 3]);
} }
} }
else { else {