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?