1 #ifndef _frustrum_h_ /* Is this your first time? */ 2 #define _frustrum_h_ 1 3 4 #include "kshape.h" 5 /* 6 * KJL 15:13:43 7/17/97 - frustrum.h 7 * 8 * function prototypes & pointers for things connected 9 * to the view frustrum and clipping 10 * 11 */ 12 13 enum FrustrumType 14 { 15 FRUSTRUM_TYPE_NORMAL, 16 FRUSTRUM_TYPE_WIDE 17 }; 18 19 extern void SetFrustrumType(enum FrustrumType frustrumType); 20 21 /* GOURAUD POLYGON CLIPPING */ 22 extern void GouraudPolygon_ClipWithZ(void); 23 extern void (*GouraudPolygon_ClipWithNegativeX)(void); 24 extern void (*GouraudPolygon_ClipWithPositiveY)(void); 25 extern void (*GouraudPolygon_ClipWithNegativeY)(void); 26 extern void (*GouraudPolygon_ClipWithPositiveX)(void); 27 28 /* TEXTURED POLYGON CLIPPING */ 29 extern void TexturedPolygon_ClipWithZ(void); 30 extern void (*TexturedPolygon_ClipWithNegativeX)(void); 31 extern void (*TexturedPolygon_ClipWithPositiveY)(void); 32 extern void (*TexturedPolygon_ClipWithNegativeY)(void); 33 extern void (*TexturedPolygon_ClipWithPositiveX)(void); 34 35 /* GOURAUD TEXTURED POLYGON CLIPPING */ 36 extern void GouraudTexturedPolygon_ClipWithZ(void); 37 extern void (*GouraudTexturedPolygon_ClipWithNegativeX)(void); 38 extern void (*GouraudTexturedPolygon_ClipWithPositiveY)(void); 39 extern void (*GouraudTexturedPolygon_ClipWithNegativeY)(void); 40 extern void (*GouraudTexturedPolygon_ClipWithPositiveX)(void); 41 42 /* FRUSTRUM TESTS */ 43 extern int PolygonWithinFrustrum(POLYHEADER *polyPtr); 44 extern int PolygonShouldBeDrawn(POLYHEADER *polyPtr); 45 extern int (*ObjectWithinFrustrum)(DISPLAYBLOCK *dbPtr); 46 extern int (*ObjectCompletelyWithinFrustrum)(DISPLAYBLOCK *dbPtr); 47 extern int (*VertexWithinFrustrum)(RENDERVERTEX *vertexPtr); 48 extern void (*TestVerticesWithFrustrum)(void); 49 50 extern int DecalWithinFrustrum(DECAL *decalPtr); 51 extern int QuadWithinFrustrum(void); 52 extern int TriangleWithinFrustrum(void); 53 54 55 /* pass a pointer to a vertex to be tested; results are returned in an int, 56 using the following defines */ 57 #define INSIDE_FRUSTRUM_Z_PLANE 1 58 #define INSIDE_FRUSTRUM_PX_PLANE 2 59 #define INSIDE_FRUSTRUM_NX_PLANE 4 60 #define INSIDE_FRUSTRUM_PY_PLANE 8 61 #define INSIDE_FRUSTRUM_NY_PLANE 16 62 #define INSIDE_FRUSTRUM 31 63 64 extern char FrustrumFlagForVertex[maxrotpts]; 65 66 #define USE_FOV_53 0 67 68 #endif 69