X-Git-Url: http://git.mutantstargoat.com/user/nuclear/?p=dosdemo;a=blobdiff_plain;f=src%2Fpolyclip.c;h=d02f645cd81540416a3725b5e264a3aeffbad73e;hp=f5ef9c79b2013eed40027fd9b762ea843f376a5f;hb=9b942b99fe10222bee50c47bfc809de268d331ec;hpb=c9a3eeccc46a19a4ab5e8b13839dfec9d05ea1d6 diff --git a/src/polyclip.c b/src/polyclip.c index f5ef9c7..d02f645 100644 --- a/src/polyclip.c +++ b/src/polyclip.c @@ -14,6 +14,7 @@ static int clip_edge_frustum(struct g3d_vertex *poly, int *vnumptr, const struct g3d_vertex *v0, const struct g3d_vertex *v1, int fplane); static float distance_signed(float *pos, const struct cplane *plane); static int intersect(const struct ray *ray, const struct cplane *plane, float *t); +static int inside_frustum_plane(const struct g3d_vertex *v, int fplane); int clip_poly(struct g3d_vertex *vout, int *voutnum, @@ -47,6 +48,11 @@ int clip_frustum(struct g3d_vertex *vout, int *voutnum, int edges_clipped = 0; int out_vnum = 0; + if(vnum == 1) { + /* special case: point clipping */ + return inside_frustum_plane(vin, fplane) ? 1 : -1; + } + for(i=0; i