Index: src/cube.c =================================================================== --- src/cube.c (Revision 1432) +++ src/cube.c (Arbeitskopie) @@ -2064,10 +2064,14 @@ unsigned int newMask; int num = 0,j; - if (cs->opt[CUBE_SCREEN_OPTION_TRANSPARENT].value.b || - compDisplayGetRequestFlagForAny (s->display, "DRAW_ALL_FACES")) + if (cs->opt[CUBE_SCREEN_OPTION_TRANSPARENT].value.b && + cs->desktopOpacity != OPAQUE) + mask |= PAINT_SCREEN_TRANSFORMED_MASK; + + if ((cs->opt[CUBE_SCREEN_OPTION_TRANSPARENT].value.b || + compDisplayGetRequestFlagForAny (s->display, "DRAW_ALL_FACES")) + && cs->invert == 1) { - if (glIsEnabled(GL_CULL_FACE) && cs->desktopOpacity != OPAQUE) { disabledCull = TRUE; @@ -2185,7 +2189,8 @@ } } - if(glIsEnabled(GL_CULL_FACE) && cs->desktopOpacity != OPAQUE) + if(glIsEnabled(GL_CULL_FACE) && cs->desktopOpacity != OPAQUE && + cs->invert == 1) { disabledCull = TRUE; glDisable(GL_CULL_FACE); @@ -2197,23 +2202,38 @@ glBlendFunc (GL_SRC_ALPHA,GL_ONE_MINUS_SRC_ALPHA); } - if (capsReversed()) + if (cs->invert == 1) { - glNormal3f (0.0, -1.0, 0.0); - if (hsize == 4) - glRotatef (270.0f, 0.0f, 1.0f, 0.0f); - cubeDrawCubeCap (s, hsize, cs->nvertices >> 1, &cs->cubeCapBottom, - &cs->cubeCapTop,cs->desktopOpacity); + if (capsReversed()) + { + glNormal3f (0.0, -1.0, 0.0); + if (hsize == 4) + glRotatef (270.0f, 0.0f, 1.0f, 0.0f); + cubeDrawCubeCap (s, hsize, cs->nvertices >> 1, &cs->cubeCapBottom, + &cs->cubeCapTop,cs->desktopOpacity); - glNormal3f (0.0, -1.0, 0.0); - if (hsize == 4) - glRotatef (-270.0f, 0.0f, 1.0f, 0.0f); - cubeDrawCubeCap (s, hsize, 0, &cs->cubeCapTop, &cs->cubeCapBottom, - cs->desktopOpacity); + glNormal3f (0.0, -1.0, 0.0); + if (hsize == 4) + glRotatef (-270.0f, 0.0f, 1.0f, 0.0f); + cubeDrawCubeCap (s, hsize, 0, &cs->cubeCapTop, &cs->cubeCapBottom, + cs->desktopOpacity); + } + else + { + glNormal3f (0.0, 1.0, 0.0); + cubeDrawCubeCap (s, hsize, 0, &cs->cubeCapTop, &cs->cubeCapBottom, + cs->desktopOpacity); + + if (hsize == 4) + glRotatef (270.0f, 0.0f, 1.0f, 0.0f); + glNormal3f (0.0, 1.0, 0.0); + cubeDrawCubeCap (s, hsize, cs->nvertices >> 1, &cs->cubeCapBottom, + &cs->cubeCapTop, cs->desktopOpacity); + } } else { - glNormal3f (0.0, 1.0, 0.0); + glNormal3f (0.0, -1.0, 0.0); cubeDrawCubeCap (s, hsize, 0, &cs->cubeCapTop, &cs->cubeCapBottom, cs->desktopOpacity); @@ -2221,7 +2241,7 @@ glRotatef (270.0f, 0.0f, 1.0f, 0.0f); glNormal3f (0.0, 1.0, 0.0); cubeDrawCubeCap (s, hsize, cs->nvertices >> 1, &cs->cubeCapBottom, - &cs->cubeCapTop, cs->desktopOpacity); + &cs->cubeCapTop, cs->desktopOpacity); } glDisable (GL_BLEND); @@ -2246,9 +2266,14 @@ if (cs->opt[CUBE_SCREEN_OPTION_MIPMAP].value.b) s->display->textureFilter = GL_LINEAR_MIPMAP_LINEAR; - num = 0; - for (i = 0; i < fc; i++) - if (!faces[i].rev) num++; + if (cs->invert == 1) + { + num = 0; + for (i = 0; i < fc; i++) + if (!faces[i].rev) num++; + } + else + num = fc; for (i = 0; i < num; i++) { @@ -2256,7 +2281,8 @@ float minZ = -2.0; for (j = 0; j < fc; j++) { - if (faces[j].z > minZ && !faces[j].painted && !faces[j].rev) + if (faces[j].z > minZ && !faces[j].painted && + (!faces[j].rev || cs->invert != 1)) { found = j; minZ = faces[j].z;