fix projective texturing for (swtcl) texture rectangles. Fix wrong argument order for texgen/texmat matrix multiplication.
This commit is contained in:
@@ -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;
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user