[D3D8] Some more texture ops fixes

Christian Costa titan.costa at wanadoo.fr
Sat Jun 19 12:08:10 CDT 2004


Hi,

These completes a little more last Raphael's tex ops fixes.

Changelog:
Some more texture ops fixes.

Christian Costa   titan.costa at wanadoo.fr

-------------- next part --------------
Index: utils.c
===================================================================
RCS file: /home/wine/wine/dlls/d3d8/utils.c,v
retrieving revision 1.24
diff -u -r1.24 utils.c
--- utils.c	14 Jun 2004 16:57:41 -0000	1.24
+++ utils.c	19 Jun 2004 15:00:35 -0000
@@ -1654,8 +1654,14 @@
 		  checkGLcall("GL_TEXTURE_ENV, comb_target, GL_MODULATE_ADD_ATI");
 		  glTexEnvi(GL_TEXTURE_ENV, src0_target, src1);
 		  checkGLcall("GL_TEXTURE_ENV, src0_target, src1");
-		  glTexEnvi(GL_TEXTURE_ENV, opr0_target, GL_SRC_ALPHA);
-		  checkGLcall("GL_TEXTURE_ENV, opr0_target, GL_SRC_APHA");
+		  switch (opr1) {
+		  case GL_SRC_COLOR: opr = GL_SRC_ALPHA; break;
+		  case GL_ONE_MINUS_SRC_COLOR: opr = GL_ONE_MINUS_SRC_ALPHA; break;
+		  case GL_SRC_ALPHA: opr = GL_SRC_ALPHA; break;
+		  case GL_ONE_MINUS_SRC_ALPHA: opr = GL_ONE_MINUS_SRC_ALPHA; break;
+		  }
+		  glTexEnvi(GL_TEXTURE_ENV, opr0_target, opr);
+		  checkGLcall("GL_TEXTURE_ENV, opr0_target, opr");
 		  glTexEnvi(GL_TEXTURE_ENV, src1_target, src1);
 		  checkGLcall("GL_TEXTURE_ENV, src1_target, src1");
 		  glTexEnvi(GL_TEXTURE_ENV, opr1_target, opr1);
@@ -1679,8 +1685,14 @@
 		  checkGLcall("GL_TEXTURE_ENV, opr0_target, opr1");
 		  glTexEnvi(GL_TEXTURE_ENV, src1_target, src1);
 		  checkGLcall("GL_TEXTURE_ENV, src1_target, src1");
-		  glTexEnvi(GL_TEXTURE_ENV, opr1_target, GL_SRC_ALPHA);
-		  checkGLcall("GL_TEXTURE_ENV, opr1_target, GL_SRC_ALPHA");
+		  switch (opr1) {
+		  case GL_SRC_COLOR: opr = GL_SRC_ALPHA; break;
+		  case GL_ONE_MINUS_SRC_COLOR: opr = GL_ONE_MINUS_SRC_ALPHA; break;
+		  case GL_SRC_ALPHA: opr = GL_SRC_ALPHA; break;
+		  case GL_ONE_MINUS_SRC_ALPHA: opr = GL_ONE_MINUS_SRC_ALPHA; break;
+		  }
+		  glTexEnvi(GL_TEXTURE_ENV, opr1_target, opr);
+		  checkGLcall("GL_TEXTURE_ENV, opr1_target, opr");
 		  glTexEnvi(GL_TEXTURE_ENV, src2_target, src2);
 		  checkGLcall("GL_TEXTURE_ENV, src2_target, src2");
 		  glTexEnvi(GL_TEXTURE_ENV, opr2_target, opr2);
@@ -1696,8 +1708,14 @@
 		  checkGLcall("GL_TEXTURE_ENV, comb_target, GL_MODULATE_ADD_ATI");
 		  glTexEnvi(GL_TEXTURE_ENV, src0_target, src1);
 		  checkGLcall("GL_TEXTURE_ENV, src0_target, src1");
-		  glTexEnvi(GL_TEXTURE_ENV, opr0_target, GL_ONE_MINUS_SRC_ALPHA);
-		  checkGLcall("GL_TEXTURE_ENV, opr0_target, GL_ONE_MINUS_SRC_APHA");
+		  switch (opr1) {
+		  case GL_SRC_COLOR: opr = GL_ONE_MINUS_SRC_ALPHA; break;
+		  case GL_ONE_MINUS_SRC_COLOR: opr = GL_SRC_ALPHA; break;
+		  case GL_SRC_ALPHA: opr = GL_ONE_MINUS_SRC_ALPHA; break;
+		  case GL_ONE_MINUS_SRC_ALPHA: opr = GL_SRC_ALPHA; break;
+		  }
+		  glTexEnvi(GL_TEXTURE_ENV, opr0_target, opr);
+		  checkGLcall("GL_TEXTURE_ENV, opr0_target, opr");
 		  glTexEnvi(GL_TEXTURE_ENV, src1_target, src1);
 		  checkGLcall("GL_TEXTURE_ENV, src1_target, src1");
 		  glTexEnvi(GL_TEXTURE_ENV, opr1_target, opr1);
@@ -1717,12 +1735,24 @@
 		  checkGLcall("GL_TEXTURE_ENV, comb_target, GL_MODULATE_ADD_ATI");
 		  glTexEnvi(GL_TEXTURE_ENV, src0_target, src1);
 		  checkGLcall("GL_TEXTURE_ENV, src0_target, src1");
-		  glTexEnvi(GL_TEXTURE_ENV, opr0_target, GL_ONE_MINUS_SRC_COLOR);
-		  checkGLcall("GL_TEXTURE_ENV, opr0_target, GL_ONE_MINUS_SRC_COLOR");
+		  switch (opr1) {
+		  case GL_SRC_COLOR: opr = GL_ONE_MINUS_SRC_COLOR; break;
+		  case GL_ONE_MINUS_SRC_COLOR: opr = GL_SRC_COLOR; break;
+		  case GL_SRC_ALPHA: opr = GL_ONE_MINUS_SRC_ALPHA; break;
+		  case GL_ONE_MINUS_SRC_ALPHA: opr = GL_SRC_ALPHA; break;
+		  }
+		  glTexEnvi(GL_TEXTURE_ENV, opr0_target, opr);
+		  checkGLcall("GL_TEXTURE_ENV, opr0_target, opr");
 		  glTexEnvi(GL_TEXTURE_ENV, src1_target, src1);
 		  checkGLcall("GL_TEXTURE_ENV, src1_target, src1");
-		  glTexEnvi(GL_TEXTURE_ENV, opr1_target, GL_SRC_ALPHA);
-		  checkGLcall("GL_TEXTURE_ENV, opr1_target, GL_SRC_ALPHA");
+		  switch (opr1) {
+		  case GL_SRC_COLOR: opr = GL_SRC_ALPHA; break;
+		  case GL_ONE_MINUS_SRC_COLOR: opr = GL_ONE_MINUS_SRC_ALPHA; break;
+		  case GL_SRC_ALPHA: opr = GL_SRC_ALPHA; break;
+		  case GL_ONE_MINUS_SRC_ALPHA: opr = GL_ONE_MINUS_SRC_ALPHA; break;
+		  }
+		  glTexEnvi(GL_TEXTURE_ENV, opr1_target, opr);
+		  checkGLcall("GL_TEXTURE_ENV, opr1_target, opr");
 		  glTexEnvi(GL_TEXTURE_ENV, src2_target, src2);
 		  checkGLcall("GL_TEXTURE_ENV, src2_target, src2");
 		  glTexEnvi(GL_TEXTURE_ENV, opr2_target, opr2);


More information about the wine-patches mailing list