On his blog, Florian Boesch introduces to a clever technique to render wireframe polygons using fragment shading, along with a live demo. The full explanation is presented in this paper. For convex polygons, just add as an attribute (or compute in the geometry shader?) the distance between the vertex and the other edges, and use the minimum distance in the fragment shader. Simple, easy to implement, and a nice anti-aliased result. (the paper also presents a second technique for non-convex polygons).