28#ifndef __FREEWRL_FRUSTUM_H__
29#define __FREEWRL_FRUSTUM_H__
32#define EXTENT_MAX_X _extent[0]
33#define EXTENT_MIN_X _extent[1]
34#define EXTENT_MAX_Y _extent[2]
35#define EXTENT_MIN_Y _extent[3]
36#define EXTENT_MAX_Z _extent[4]
37#define EXTENT_MIN_Z _extent[5]
49 #undef VISIBILITYOCCLUSION
61#define OCCLUSIONTEST \
63 if ((renderstate()->render_geom!=0) | (renderstate()->render_sensitive!=0)) { \
65 if ((node->_renderFlags & VF_hasVisibleChildren) == 0) { \
105void moveAndRotateThisPoint(
struct point_XYZ *mypt,
double x,
double y,
double z,
double *MM);
106void setExtent(
float maxx,
float minx,
float maxy,
float miny,
float maxz,
float minz,
struct X3D_Node *me);
107void printmatrix(GLDOUBLE* mat);
109void record_ZBufferDistance(
struct X3D_Node *,
void *);
110void OcclusionStartofRenderSceneUpdateScene(
void);
111void OcclusionCulling (
void);
112void zeroOcclusion(
void);
120float *extent6f_constructor(
float *extent6,
float xmin,
float xmax,
float ymin,
float ymax,
float zmin,
float zmax);
121float *extent6f_clear(
float *extent6);
122int extent6f_isSet(
float *extent6);
123float *extent6f_copy(
float *eout6,
float *ein6);
124void extent6f_to_vec3f(
float *extent6,
float *pmin,
float *pmax);
125void extent6f_from_vec3f2(
float *extent6,
float *pmin,
float *pmax);
126void extent6f_to_box3f8(
float *extent6,
float *p3f8);
127float *extent6f_from_box3fn(
float *extent6,
float *p,
int n);
128float *extent6f_union_extent6f(
float *extent6,
float *ein6);
129float *extent6f_intersect_extent6f(
float *extent6,
float *eina,
float *einb);
130float *extent6f_union_vec3f(
float *extent6,
float *p3);
131float *extent6f_scale3f(
float *eout6,
float *ein6,
float *s3);
132float *extent6f_translate3f(
float *eout6,
float *ein6,
float *p3);
133float *extent6f_translate3d(
float *eout6,
float *ein6,
double *p3);
134float *extent6f_get_center3f(
float *extent6,
float *center3);
135float extent6f_get_maxsize(
float *extent6);
136float extent6f_get_maxradius(
float *extent6);
137float *extent6f_rotate4f(
float *eout6,
float *ein6,
float *vrot4);
138float *extent6f_rotate4d(
float *eout6,
float *ein6,
double *vrot4);
139float *extent6f_mattransform4d(
float *eout6,
float *ein6,
double *mat4);
140void extent6f_printf(
float *extent6);
141void extent6f_draw(
float *extent);
142void bbox2extent6f(
float* center,
float *size,
float *extent6);
143void extent6f2bbox(
float *extent6,
float* center,
float *size);
144void draw_bbox(
float *center,
float *size);
146float *orientedBBox_mattransformAFFINE4d(
float *p3fn24,
float *obb12,
double *mat4);
147float *orientedBBox2vec3fn(
float *p3fn24,
float *obb12);
148int extent6f_point_inside(
float *extent6,
float *pd);
164void setFrustumPlanes(
double *mvpMatrix,
struct Planed *pl);
165int frustum_point_inside(
struct Planed *frustum_planes,
double *p);
166int frustum_generate_corner_points(
struct Planed *frustum_planes,
float *pf24n);
167int plane_intersect_plane_intersect_plane(
struct Planed *p1,
struct Planed *p2,
struct Planed *p3,
double *point);
168int frustum_box_inside(
struct Planed *frustum_planes,
float *corners3f,
int np);