[AD] polygon_cull_criterion()

[ Thread Index | Date Index | More lists.liballeg.org/allegro-developers Archives ]

Allegro has a function called polygon_z_normal() in "math3d.c". This
function alone is  completely ok, but the docs say you can use it for
backface culling. Sorry, this is downright wrong. You could only use
polygon_z_normal() for backface culling if one of these conditions are met:

   a) you are in homogenous coordinates
   b) you have an orthogonal projection matrix

It is easy to prove that a face could be visible even if the return value
of polygon_z_normal() is negative. "ex3d.c" does a workaround of this error
in that it depth-sorts faces even if they should be culled and a per-face
depth sorting should not be necessary. I have corrected the docs that they
no longer pretend you can use polygon_z_normal() for backface culling + I
have added a function called polygon_cull_criterion() that does this job
correctly and described it in the docs + I have patched ex3d.c to use
polygon_cull_criterion() instead of polygon_z_normal().

I hope I didn't puzzle you. You certainly thought this part of the library
was tried and true.

And this time I didn't leave out allegro.h in the patch :-)

Attachment: polygon_cull.diff
Description: Binary data

Mail converted by MHonArc 2.6.19+ http://listengine.tuxfamily.org/