Don’t know what to tell you. I’m not having any trouble doing what you’re trying to do. I wrote a little program that displays 3 layers of house-shaped, transparent, polys. It works fine. The pic below shows wireframe and filled versions. I can rotate it to any orientation and the transparency seems to work correctly. I don’t get the lines you get. I didn’t use your code exactly, but my code is very similar. I’ve included the pertinent parts of it. If you have time, there are 2 experiments you could try: 1) run your code on another computer (maybe you have driver problems), 2) test to see if the problem is numerical (as suggested by another poster), enter coordinates of the vertices explicitly rather than computing them on the fly.

//---+----3----+----2----+----1----+---<>---+----1----+----2----+----3----+----4
//-------------------------------- Houses ----------------------------------
void Houses (void)
{
short i;
float z = -0.4;
glBegin (GL_TRIANGLES);
for (i = 0; i < 3; i++) {
z += 0.4;
switch (i) {
case 0: glColor4f (0.8, 0.4, 0.1, 0.5); break;
case 1: glColor4f (0.1, 1.0, 0.5, 0.5); break;
case 2: glColor4f (0.1, 0.5, 1.0, 0.5); break;
}
glVertex3f (0,0,z); glVertex3f (0.5,1.5,z); glVertex3f (0.0,1.0,z);
glVertex3f (0,0,z); glVertex3f (1.0,1.0,z); glVertex3f (0.5,1.5,z);
glVertex3f (0,0,z); glVertex3f (1.0,0.0,z); glVertex3f (1.0,1.0,z);
}
glEnd ();
}
//---+----3----+----2----+----1----+---<>---+----1----+----2----+----3----+----4
//-------------------------------- Layers ----------------------------------
void Layers (void)
{
glEnable (GL_BLEND);
// glEnable (GL_CULL_FACE);
glDisable (GL_DEPTH_TEST);
glBlendFunc (GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
// glPolygonMode (GL_FRONT_AND_BACK, GL_LINE);
glPolygonMode (GL_FRONT_AND_BACK, GL_FILL);
Houses ();
}
//---+----3----+----2----+----1----+---<>---+----1----+----2----+----3----+----4
//------------------------------- Display ----------------------------------
void Display (void)
{
glClear (GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glMatrixMode (GL_PROJECTION);
glLoadIdentity ();
gluPerspective (40.0, 1.5, 0.1, 10.0);
glMatrixMode (GL_MODELVIEW);
glLoadIdentity ();
glTranslatef (-0.5, -0.6, -5.0);
glRotatef (tippangle, 1,0,0); // Up and down arrow keys 'tip' view.
glRotatef (viewangle, 0,1,0); // Right/left arrow keys 'turn' view.
Layers ();
Triad ();
glutSwapBuffers();
}
//---+----3----+----2----+----1----+---<>---+----1----+----2----+----3----+----4
int main (int argc, char **argv)
{
glutInit (&argc, argv);
glutInitDisplayMode (GLUT_DOUBLE | GLUT_RGB);
glutInitWindowPosition (300, 200 );
glutInitWindowSize (600, 400 );
glutCreateWindow ("Multiple Layer Transparency");
glClearColor (0.2, 0.2, 0.2, 0.0);
glutDisplayFunc (Display);
glutReshapeFunc (ReSize);
glutSpecialFunc (Special_Keys);
glutMainLoop ();
return 1;
}
//---+----3----+----2----+----1----+---<>---+----1----+----2----+----3----+----4