Ah. Well that will be kinda tricky cause you will have to save each 3 vertices and then calc the normal (but you know that). Not an OpenGl problem but a programming/logic problem. Likely you can figure out the solution within the loop but I bet first and last normals have to be calc’d outside the loop. Is this much help? Prob not. Good luck.
Well, the easiest solution, as far as I can tell…( heh heh ) would be this:
A torus is basically a circular or elliptical shape swept along a circular path.
With this idea in mind, if you take the current point on the circular path ( the origin of the shape you are sweeping ) and then subtract that from the point on the surface of the torus you’ve just calculated…then normalize that vector, that should be the normal for that point of the torus.
I’ve probably not described my idea very well, and if I could draw a picture it would be much clearer I’m sure…ah well. Hope this helps?