On Aug 21, 5:35=A0pm, uuilly <willy.li...@[EMAIL PROTECTED]
> wrote:
> On Aug 21, 4:58=A0pm, "jbwest" <jbw...@[EMAIL PROTECTED]
> wrote:
>
>
>
> > "uuilly" <willy.li...@[EMAIL PROTECTED]
> wrote in message
>
>
>news:b204512e-7fb7-4fdc-9d46-369db9277154@[EMAIL PROTECTED]
> > On Aug 21, 9:11 am, "jbwest" <jbw...@[EMAIL PROTECTED]
> wrote:
>
> > > <willy.p...@[EMAIL PROTECTED]
> wrote in message
>
> >
>news:c45bd917-ce46-4f04-82e7-4cf6508e6e15@[EMAIL PROTECTED]
> > > On Aug 20, 5:40 pm, "jbwest" <jbw...@[EMAIL PROTECTED]
> wrote:
>
> > > [...]
>
> > > > Gosh, it's been a while... Is it a closure problem? Do you need to
=
add a
> > > > last point =3D 1st in the input data to close up the polygon ?
>
> > > > jbw
> > > >I've tried w/ and w/o a last=3D=3Dfirst. It's funny, it fixes some
o=
f the
> > > >counties and breaks just as many others. Any other thoughts? My
next
> > > > move is to write my own tessellation algorithm.
>
> > > That's definitely a closure, off-by-one or last-triangle logic
proble=
m.
> > > I've
> > > never had problems with the much-maligned tesselator with very
comple=
x
> > > geometries. Surely you can just trace what's being emitted and see
wh=
y the
> > > last triangle isn't being created (or has the wrong winding ?).
>
> > > jbw
> > >I think I get closure, first =3D=3D last, but what is an: "Off by
one"=
or
> > >"last triangle logic problem"? =A0Thanks for the advice btw.
>
> > Your sample data doesn't even invoke Combine on my Linux glu
Tesselator
> > sample app. Just a combination of tri-strips and tri-fans, resulting
in=
a
> > rectangle. One or the other of those types of BEGIN appears to be
> > implemented wrong in your app. Otherwise, does this note apply to you
?
>
> > "Notes
> > It is a common error to use a local variable for location or data and
s=
tore
> > values into it as part of a loop. For example: for (i =3D 0; i <
NVERTI=
CES;
> > ++i) {
> > =A0 GLdouble data[3];
> > =A0 data[0] =3D vertex[i][0];
> > =A0 data[1] =3D vertex[i][1];
> > =A0 data[2] =3D vertex[i][2];
> > =A0 gluTessVertex(tobj, data, data);
> > =A0 }
>
> > This doesn't work. Because the pointers specified by location and data
=
might
> > not be dereferenced until gluTessEndPolygon is executed, all the
vertex
> > coordinates but the very last set could be overwritten before
tessellat=
ion
> > begins.
>
> > Two common symptoms of this problem are consists of a single point
(whe=
n a
> > local variable is used for data) and a GLU_TESS_NEED_COMBINE_CALLBACK
e=
rror
> > (when a local variable is used for location."
>
> > jbw
>
> Wow. =A0Can you paste all your gluCallbacks here?
I am not even using callbacks for begin and end. I'm just passing the
raw gl routines. Combine callback and tessError are my only two
custom callbacks.
gluTessCallback( _tessPtr, GLU_TESS_BEGIN, ( GLvoid( * )
( ... ) )glBegin );
gluTessCallback( _tessPtr, GLU_TESS_END, ( GLvoid( * )
( ... ) )glEnd );
gluTessCallback( _tessPtr, GLU_TESS_VERTEX, ( GLvoid( * )
( ... ) )glVertex3fv );
gluTessCallback( _tessPtr, GLU_TESS_COMBINE, ( GLvoid( * )
( ... ) )combineCallback );
gluTessCallback( _tessPtr, GLU_TESS_ERROR, ( GLvoid( * )
( ... ) )tessError );
same code for linux ****t:
gluTessCallback( _tessPtr, GLU_TESS_BEGIN, ( void( * )() )glBegin );
gluTessCallback( _tessPtr, GLU_TESS_END, ( void( * )() )glEnd );
gluTessCallback( _tessPtr, GLU_TESS_VERTEX, ( void( * )
() )glVertex3fv );
gluTessCallback( _tessPtr, GLU_TESS_COMBINE, ( void( * )
() )combineCallback );
gluTessCallback( _tessPtr, GLU_TESS_ERROR, ( void( * )
() )tessError );


|