Hi, I’ve been playing around with OpenGL over the past few days and have stumbled accross a problem. Backface culling. It’s awfully difficult to get all your vertices to be in anti-clockwise order just to specify which direction the tri/quad is facing…are there any easier ways of doing it? (like using glNormal3f() instead? I tried this, but it didn’t work. Surely, it would be much fast since OpenGL wont have to calculate dot+cross product for everything).
>> It’s awfully difficult to get all your vertices to be in anti-clockwise order just to specify which direction the tri/quad is facing.
u must supply the vertices in the correct order yourself
Subject 2.07: How do I find the orientation of a simple polygon?
from the comp.graphics.algorithms faq
Compute the signed area (Subject 2.01). The orientation is counter-clockwise if this area is positive. A slightly faster method is based on the observation that it isn't necessary to compute the area. Find the lowest vertex (or, if there is more than one vertex with the same lowest coordinate, the rightmost of those vertices) and then take the cross product of the edges fore and aft of it. Both methods are O(n) for n vertices, but it does seem a waste to add up the total area when a single cross product (of just the right edges) suffices. Code for this is available at [ftp://cs.smith.edu/pub/code/polyorient.C](ftp://cs.smith.edu/pub/code/polyorient.C) (2K). The reason that the lowest, rightmost (or any other such extreme) point works is that the internal angle at this vertex is necessarily convex, strictly less than pi (even if there are several equally-lowest points).