GEOM.H
/**********************************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__