|
In lugnet.cad, Travis Cobbs wrote:
|
In lugnet.cad, Santeri Piippo wrote:
|
Polygon sorting - help needed
I need a little bit help, however. The polygon sorting algorithm I have
right now does not work properly. Currently its done by calculating the
center of the polygon by simply calculating the means of the coordinates.
How do existing programs - LDView in particular as its an OpenGL one too -
sort polygons? Id appreciate help tremendously here..
|
The only polygons that LDView sorts are transparent ones. Everything else is
handled by the OpenGL depth buffer (glEnable(GL_DEPTH_TEST), followed by
glDepthFunc(GL_LEQUAL)). Transparent polygons need to be sorted before
being drawn, and LDView does what you describe above for those. (Theres
more to it than that for transparent polygons; sorting is just one step.)
Sorting by the distance to the centroid is only an approximation, but its
good enough to look pretty good for transparent polygons. Its not good
enough to be used as the primary means of hiding geometry thats farther away
from the viewer.
|
If you prefer not to sort at all you can use glEnable(GL_POLYGON_STIPPLE)
for transparent polygons. It doesnt look nearly as good, but its really
easy to code.
Have fun,
Don
|
|
|
In lugnet.cad, Don Heyse wrote:
|
If you prefer not to sort at all you can use glEnable(GL_POLYGON_STIPPLE)
for transparent polygons. It doesnt look nearly as good, but its really
easy to code.
Have fun,
Don
|
If you want a visual example on stipple, look at my LD4DStudio, it uses it for
transparent stuff.
In combination with depth buffer you dont need to sort anything just push the
triangles and/or quad cords using glDrawElements and optionally vbo.
vbo means the driver will try to put all vertex data in video memory for
rendering, this is about four times faster on most cards.
Ill try to (re)find the tutorials/website I used to get started with LD4DStudio
and post them tonight. But most stuff you can find by doing a search on
glDrawElements and vbo (vertex buffer object)
ps: i suggest moving this to dev
Roland
|
|
|