X-Git-Url: http://git.mutantstargoat.com/user/nuclear/?a=blobdiff_plain;f=src%2Fpolyclip.c;h=d02f645cd81540416a3725b5e264a3aeffbad73e;hb=refs%2Fheads%2Fbsp;hp=f5ef9c79b2013eed40027fd9b762ea843f376a5f;hpb=1bd8af3c3c9ec41903590d6ad24ff6313a5cc19b;p=dosdemo 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