summaryrefslogtreecommitdiff
path: root/src/frustum.h
blob: faf77959a3e006f1badbff1d0211289a3282650d (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
#ifndef _frustrum_h_ /* Is this your first time? */
#define _frustrum_h_ 1

#include "kshape.h"
/*
 * KJL 15:13:43 7/17/97 - frustrum.h
 *
 * function prototypes & pointers for things connected
 * to the view frustrum and clipping
 *
 */

enum FrustrumType 
{
	FRUSTRUM_TYPE_NORMAL,
	FRUSTRUM_TYPE_WIDE
};

extern void SetFrustrumType(enum FrustrumType frustrumType);

/* GOURAUD POLYGON CLIPPING */
extern void GouraudPolygon_ClipWithZ(void);
extern void (*GouraudPolygon_ClipWithNegativeX)(void);
extern void (*GouraudPolygon_ClipWithPositiveY)(void);
extern void (*GouraudPolygon_ClipWithNegativeY)(void);
extern void (*GouraudPolygon_ClipWithPositiveX)(void);

/* TEXTURED POLYGON CLIPPING */
extern void TexturedPolygon_ClipWithZ(void);
extern void (*TexturedPolygon_ClipWithNegativeX)(void);
extern void (*TexturedPolygon_ClipWithPositiveY)(void);
extern void (*TexturedPolygon_ClipWithNegativeY)(void);
extern void (*TexturedPolygon_ClipWithPositiveX)(void);

/* GOURAUD TEXTURED POLYGON CLIPPING */
extern void GouraudTexturedPolygon_ClipWithZ(void);
extern void (*GouraudTexturedPolygon_ClipWithNegativeX)(void);
extern void (*GouraudTexturedPolygon_ClipWithPositiveY)(void);
extern void (*GouraudTexturedPolygon_ClipWithNegativeY)(void);
extern void (*GouraudTexturedPolygon_ClipWithPositiveX)(void);

/* FRUSTRUM TESTS */
extern int PolygonWithinFrustrum(POLYHEADER *polyPtr);
extern int PolygonShouldBeDrawn(POLYHEADER *polyPtr);
extern int (*ObjectWithinFrustrum)(DISPLAYBLOCK *dbPtr);
extern int (*ObjectCompletelyWithinFrustrum)(DISPLAYBLOCK *dbPtr);
extern int (*VertexWithinFrustrum)(RENDERVERTEX *vertexPtr);
extern void (*TestVerticesWithFrustrum)(void);

extern int DecalWithinFrustrum(DECAL *decalPtr);
extern int QuadWithinFrustrum(void);
extern int TriangleWithinFrustrum(void);


/* pass a pointer to a vertex to be tested; results are returned in an int,
using the following defines */
#define INSIDE_FRUSTRUM_Z_PLANE		1
#define INSIDE_FRUSTRUM_PX_PLANE	2	
#define INSIDE_FRUSTRUM_NX_PLANE	4	
#define INSIDE_FRUSTRUM_PY_PLANE	8	
#define INSIDE_FRUSTRUM_NY_PLANE	16	
#define INSIDE_FRUSTRUM				31

extern char FrustrumFlagForVertex[maxrotpts];

#define USE_FOV_53 0

#endif