Fix alpha value of STATE_LIGHTMODEL_SCENECOLOR. From the spec:

The "w" component of the program parameter variable is filled with
 the alpha component of the front diffuse material color.

Make sure matrix inverses are uptodate also.
This commit is contained in:
Keith Whitwell
2005-04-15 12:57:23 +00:00
parent a131d50fb7
commit 78803b2667
+7 -3
View File
@@ -648,20 +648,22 @@ _mesa_fetch_state(GLcontext *ctx, const enum state_index state[],
if (state[1] == 0) {
/* front */
GLint i;
for (i = 0; i < 4; i++) {
for (i = 0; i < 3; i++) {
value[i] = ctx->Light.Model.Ambient[i]
* ctx->Light.Material.Attrib[MAT_ATTRIB_FRONT_AMBIENT][i]
+ ctx->Light.Material.Attrib[MAT_ATTRIB_FRONT_EMISSION][i];
}
value[3] = ctx->Light.Material.Attrib[MAT_ATTRIB_FRONT_DIFFUSE][3];
}
else {
/* back */
GLint i;
for (i = 0; i < 4; i++) {
for (i = 0; i < 3; i++) {
value[i] = ctx->Light.Model.Ambient[i]
* ctx->Light.Material.Attrib[MAT_ATTRIB_BACK_AMBIENT][i]
+ ctx->Light.Material.Attrib[MAT_ATTRIB_BACK_EMISSION][i];
}
value[3] = ctx->Light.Material.Attrib[MAT_ATTRIB_BACK_DIFFUSE][3];
}
return;
case STATE_LIGHTPROD:
@@ -806,7 +808,9 @@ _mesa_fetch_state(GLcontext *ctx, const enum state_index state[],
}
if (modifier == STATE_MATRIX_INVERSE ||
modifier == STATE_MATRIX_INVTRANS) {
/* XXX be sure inverse is up to date */
/* Be sure inverse is up to date:
*/
_math_matrix_analyse( matrix );
m = matrix->inv;
}
else {