fix projective texturing for (swtcl) texture rectangles. Fix wrong argument order for texgen/texmat matrix multiplication.

This commit is contained in:
Roland Scheidegger
2005-09-26 17:11:16 +00:00
parent ad271b8c98
commit 84c9e671ed
2 changed files with 17 additions and 7 deletions
+4 -4
View File
@@ -2073,11 +2073,11 @@ static void update_texturematrix( GLcontext *ctx )
/* Need to preconcatenate any active texgen
* obj/eyeplane matrices:
*/
_math_matrix_mul_matrix( &rmesa->tmpmat,
&rmesa->TexGenMatrix[unit],
ctx->TextureMatrixStack[unit].Top );
_math_matrix_mul_matrix( &rmesa->tmpmat,
ctx->TextureMatrixStack[unit].Top,
&rmesa->TexGenMatrix[unit] );
upload_matrix( rmesa, rmesa->tmpmat.m, TEXMAT_0+unit );
}
}
else {
rmesa->TexMatEnabled |=
(RADEON_TEXGEN_INPUT_TEXCOORD_0+unit) << inputshift;
+13 -3
View File
@@ -499,10 +499,20 @@ static GLboolean run_texrect_stage( GLcontext *ctx,
GLint instride = VB->TexCoordPtr[i]->stride;
GLfloat (*out)[4] = store->texcoord[i].data;
GLint j;
store->texcoord[i].size = VB->TexCoordPtr[i]->size;
for (j = 0 ; j < VB->Count ; j++) {
out[j][0] = in[0] * iw;
out[j][1] = in[1] * ih;
switch (VB->TexCoordPtr[i]->size) {
case 4:
out[j][3] = in[3];
/* fallthrough */
case 3:
out[j][2] = in[2];
/* fallthrough */
default:
out[j][0] = in[0] * iw;
out[j][1] = in[1] * ih;
}
in = (GLfloat *)((GLubyte *)in + instride);
}