/**********************************Module**********************************\
*
* geom.h
*
* 3D FlowerBox screen saver
* Geometry header file
*
* Copyright 1995 - 1998 Microsoft Corporation
*
\**************************************************************************/
#ifndef __GEOM_H__
#define __GEOM_H__
// Geometry of a shape
// A side of a shape
typedef struct _SIDE
{
// Number of triangle strips in this side
int nstrips;
// Number of vertices per strip
int *strip_size;
// Indices for each point in the triangle strips
unsigned int *strip_index;
// The number of elements for glDrawElements call
int num_eles;
// Index buffer for glDrawElements
GLuint *dBuf;
} SIDE;
typedef struct _GEOMETRY
{
void (*init)(struct _GEOMETRY *geom);
// Number of sides
int nsides;
// Sides
SIDE sides[MAXSIDES];
// Data for each vertex in the shape
PT3 *pts, *npts;
PT3 *normals;
// Total number of vertices
int total_pts;
// Scaling control
FLT min_sf, max_sf, sf_inc;
// Initial scale factor setup control
FLT init_sf;
} GEOMETRY;
#define GEOM_CUBE 0
#define GEOM_TETRA 1
#define GEOM_PYRAMIDS 2
extern GEOMETRY *geom_table[];
void InitVlen(GEOMETRY *geom, int npts, PT3 *pts);
void UpdatePts(GEOMETRY *geom, FLT sf);
void DrawGeom(GEOMETRY *geom);
extern void DrawWithVArrays (GEOMETRY *geom);
#endif // __GEOM_H__