Rudy Darken (darken++at++enews.nrl.navy.mil)
Mon, 6 Jun 94 17:06:24 -0400
Rudy
_______________________________________________________________
Rudy Darken <202> 767-6814
darken++at++enews.nrl.navy.mil The U.S. Naval Research Laboratory
darken++at++seas.gwu.edu The George Washington University
_______________________________________________________________
/*
* Build a geode of color of square size extent x extent with spacing
* between lines of gap.
*/
#define Z 0.0f;
pfGeode *
LoadGrid (pfVec4 color, long extent, long gap)
{
long numLines;
void *arena;
pfGeode *geode;
pfMaterial *material;
pfGeoState *geostate;
pfGeoSet *gset;
pfVec3 *vertices;
pfVec4 *colors;
short ctr, i, j, c;
if (extent % gap)
{
pfNotify (PFNFY_WARN, PFNFY_RESOURCE,
"Extent not divisible by gap");
return NULL;
}
arena = pfGetSharedArena ();
geode = pfNewGeode ();
/*material = pfNewMtl (arena);*/
/*pfMtlColor (material, PFMTL_AMBIENT, color[0], color[1], color[2]);*/
/*pfMtlColor (material, PFMTL_DIFFUSE, color[0], color[1], color[2]);*/
/*pfMtlColorMode (material, PFMTL_FRONT, LMC_AD);*/
geostate = pfNewGState (arena);
/*pfGStateAttr (geostate, PFSTATE_FRONTMTL, material);*/
/*pfGStateMode (geostate, PFSTATE_CULLFACE, PFCF_OFF);*/
gset = pfNewGSet (arena);
pfGSetPrimType (gset, PFGS_LINES);
/*pfGSetGState (gset, geostate);*/
numLines = 2 * ((extent / gap)+1);
vertices = (pfVec3 *) pfMalloc (numLines * 2 * sizeof (pfVec3), arena);
colors = (pfVec4 *) pfMalloc (numLines * 2 * sizeof (pfVec4), arena);
pfGSetNumPrims (gset, numLines);
ctr = 0;
for (i=-(extent/2), c=0; c<2; c++)
{
if (!c)
{
for (j=-(extent/2); j<=(extent/2); j+=gap)
{
vertices[ctr][0] = i;
vertices[ctr][1] = j;
vertices[ctr++][2] = Z;
vertices[ctr][0] = -i;
vertices[ctr][1] = j;
vertices[ctr++][2] = Z;
}
}
else
{
for (j=-(extent/2); j<=(extent/2); j+=gap)
{
vertices[ctr][0] = j;
vertices[ctr][1] = i;
vertices[ctr++][2] = Z;
vertices[ctr][0] = j;
vertices[ctr][1] = -i;
vertices[ctr++][2] = Z;
}
}
}
for (i=0; i<numLines*2; i++)
pfCopyVec4 (colors[i], color);
/*pfGSetDrawMode (gset, PFGS_WIREFRAME, PF_ON);*/
pfGSetAttr (gset, PFGS_COORD3, PFGS_PER_VERTEX, vertices, NULL);
pfGSetAttr (gset, PFGS_COLOR4, PFGS_PER_VERTEX, colors, NULL);
pfAddGSet (geode, gset);
return geode;
}
#undef Z
This archive was generated by hypermail 2.0b2 on Mon Aug 10 1998 - 17:50:19 PDT