![]()
Frustum
Description: Frustum creation/clipping
Source file: …\genesis3d\OpenSource\Source\World\FRUSTUM.h
Functions:
SetFromCamera, SetFromPoly, RotateToWorldSpace, TransformToWorldSpace, ClipVertsFannedUVRGB, ClipToPlane, ClipToPlaneUV, ClipToPlaneUVRGB, ClipToPlaneUVRGBA, ClipToPlaneRGB, ClipToPlaneL, Project, ProjectRGB, ProjectRGBA, ProjectRGBNoClamp, PointsInFrustum, PointInFrustum, ClipAllPlanesL Frustum_InfoConstants:
viewAdditions for Genesis3D v1.6:
NoneNote:
view![]()
#define MAX_FCP 32 // Max ClipPlanes for frustum...
#define CLIP_PLANE_EPSILON 0.001f
Return to Contents
![]()
Types: :
typedef struct Frustum_Info {
int32 NumPlanes; // Number of frustum planes to clip against
GFX_Plane Planes[MAX_FCP]; // Planes to clip against
// Quick LUTS For BBox testing against frustum
int32 FrustumBBoxIndexes[MAX_FCP*6];
int32* pFrustumBBoxIndexes[MAX_FCP];
} Frustum_Info;
Return to Contents
![]()
Functions:
![]()
Return to Contents
![]()
geBoolean Frustum_SetFromPoly(Frustum_Info* Info, geVec3d* Verts, int32 NumVerts, geBoolean Flip);
Return to Contents
![]()
Return to Contents
![]()
Return to Contents
![]()
geBoolean gePlane_ClipVertsFannedUVRGB(const geVec3d* In, const Surf_TexVert* TIn, int32 NumIn, const GFX_Plane* Plane, geVec3d* Out, Surf_TexVert* TOut, int32* NumOut);
Return to Contents
![]()
geBoolean Frustum_ClipToPlane(GFX_Plane* pPlane, geVec3d* pIn, geVec3d* pOut, int32 NumVerts, int32* OutVerts);
Return to Contents
![]()
geBoolean Frustum_ClipToPlaneUV(GFX_Plane* pPlane, geVec3d* pIn, geVec3d* pOut, Surf_TexVert* pTIn, Surf_TexVert* pTOut, int32 NumVerts, int32* OutVerts);
Return to Contents
![]()
geBoolean Frustum_ClipToPlaneUVRGB(GFX_Plane* pPlane, geVec3d* pIn, geVec3d* pOut, Surf_TexVert* pTIn, Surf_TexVert* pTOut, int32 NumVerts, int32* OutVerts);
Return to Contents
![]()
geBoolean Frustum_ClipToPlaneUVRGBA(GFX_Plane* pPlane, geVec3d* pIn, geVec3d* pOut, Surf_TexVert* pTIn, Surf_TexVert* pTOut, int32 NumVerts, int32* OutVerts);
Return to Contents
![]()
geBoolean Frustum_ClipToPlaneRGB(GFX_Plane* pPlane, geVec3d* pIn, geVec3d* pOut, Surf_TexVert* pTIn, Surf_TexVert* pTOut, int32 NumVerts, int32* OutVerts);
Return to Contents
![]()
geBoolean Frustum_ClipToPlaneL(GFX_Plane* pPlane, GE_LVertex* pIn, GE_LVertex* pOut, int32 NumVerts, int32* OutVerts);
// CB added
Return to Contents
![]()
Return to Contents
![]()
Return to Contents
![]()
Return to Contents
![]()
Return to Contents
![]()
geBoolean Frustum_PointsInFrustum(const geVec3d* Pin, const GFX_Plane* Plane, int32 NumVerts, int32* c);
Return to Contents
![]()
geBoolean Frustum_PointInFrustum(const Frustum_Info* Fi, const geVec3d* Point, float Radius);
Return to Contents
![]()
geBoolean Frustum_ClipAllPlanesL(const Frustum_Info* Fi, uint32 ClipFlags, GE_LVertex* Verts, int32* pNumVerts);
Return to Contents
![]()
What is a frustum? Here is a helpful web page I found that explaines the concept. It was originally written for the POVRay graphic engine, but the concept should be the same.
![]()