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]
39#define RECORD_DISTANCE \
41 ttrenderstate rs = renderstate();\
42 if (rs->render_geom && (!rs->render_blend)) {record_ZBufferDistance (X3D_NODE(node)); }\
55 #undef VISIBILITYOCCLUSION
67#define OCCLUSIONTEST \
69 if ((renderstate()->render_geom!=0) | (renderstate()->render_sensitive!=0)) { \
71 if ((node->_renderFlags & VF_hasVisibleChildren) == 0) { \
111void moveAndRotateThisPoint(
struct point_XYZ *mypt,
double x,
double y,
double z,
double *MM);
112void setExtent(
float maxx,
float minx,
float maxy,
float miny,
float maxz,
float minz,
struct X3D_Node *me);
113void printmatrix(GLDOUBLE* mat);
114void propagateExtent(
struct X3D_Node *me);
115void record_ZBufferDistance(
struct X3D_Node *node);
116void OcclusionStartofRenderSceneUpdateScene(
void);
117void OcclusionCulling (
void);
118void zeroOcclusion(
void);
126float *extent6f_constructor(
float *extent6,
float xmin,
float xmax,
float ymin,
float ymax,
float zmin,
float zmax);
127float *extent6f_clear(
float *extent6);
128int extent6f_isSet(
float *extent6);
129float *extent6f_copy(
float *eout6,
float *ein6);
130void extent6f_to_vec3f(
float *extent6,
float *pmin,
float *pmax);
131void extent6f_from_vec3f2(
float *extent6,
float *pmin,
float *pmax);
132void extent6f_to_box3f8(
float *extent6,
float *p3f8);
133float *extent6f_from_box3fn(
float *extent6,
float *p,
int n);
134float *extent6f_union_extent6f(
float *extent6,
float *ein6);
135float *extent6f_intersect_extent6f(
float *extent6,
float *eina,
float *einb);
136float *extent6f_union_vec3f(
float *extent6,
float *p3);
137float *extent6f_scale3f(
float *eout6,
float *ein6,
float *s3);
138float *extent6f_translate3f(
float *eout6,
float *ein6,
float *p3);
139float *extent6f_translate3d(
float *eout6,
float *ein6,
double *p3);
140float *extent6f_get_center3f(
float *extent6,
float *center3);
141float extent6f_get_maxsize(
float *extent6);
142float extent6f_get_maxradius(
float *extent6);
143float *extent6f_rotate4f(
float *eout6,
float *ein6,
float *vrot4);
144float *extent6f_rotate4d(
float *eout6,
float *ein6,
double *vrot4);
145float *extent6f_mattransform4d(
float *eout6,
float *ein6,
double *mat4);
146void extent6f_printf(
float *extent6);
147void extent6f_draw(
float *extent);