Cracks in shadow volume

I’m working on implementing depth pass shadow volumes and I have come across a problem. I find the silhouette edges, of the shadow caster, seen from a given point in space and then extrude each edge as a quad to form the shadow volume. I use GL_QUADS to draw the quads but it results in visible cracks between adjacent quads. I do not understand this, since two quads which share an edge (in the shadow volume) have the same vertices, so how can the crack between them exist?

I was thinking that maybe it is necessary to draw the quads using GL_QUAD_STRIP to avoid the cracks, is this true? If so, I have to find “silhouette edge loops” and draw each loop as a quad strip. How can this be done efficiently, without doing several brute force passes on the silhouette edge list?

There shouldn’t be any cracks if the card obeys GL rules, but I think you do get cracks if polygon orientation is not the same for the 2 polygons sharing an edge.

I’m not sure about that part. Better check the spec.

I have also noticed some perculiar things on certain cards depending on the GL state