On Aug 21, 5:45=A0pm, uuilly <willy.li...@[EMAIL PROTECTED]
> wrote:
> 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
t=
o 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=
of the
> > > > >counties and breaks just as many others. Any other thoughts? My
ne=
xt
> > > > > move is to write my own tessellation algorithm.
>
> > > > That's definitely a closure, off-by-one or last-triangle logic
prob=
lem.
> > > > I've
> > > > never had problems with the much-maligned tesselator with very
comp=
lex
> > > > geometries. Surely you can just trace what's being emitted and see
=
why 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
on=
e" or
> > > >"last triangle logic problem"? =A0Thanks for the advice btw.
>
> > > Your sample data doesn't even invoke Combine on my Linux glu
Tesselat=
or
> > > 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=
store
> > > values into it as part of a loop. For example: for (i =3D 0; i <
NVER=
TICES;
> > > ++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
dat=
a might
> > > not be dereferenced until gluTessEndPolygon is executed, all the
vert=
ex
> > > coordinates but the very last set could be overwritten before
tessell=
ation
> > > begins.
>
> > > Two common symptoms of this problem are consists of a single point
(w=
hen a
> > > local variable is used for data) and a
GLU_TESS_NEED_COMBINE_CALLBACK=
error
> > > (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. =A0I'm just passing the
> raw gl routines. =A0Combine callback and tessError are my only two
> custom callbacks.
>
> =A0 =A0 =A0 =A0 gluTessCallback( _tessPtr, GLU_TESS_BEGIN, ( GLvoid( * )
> ( ... ) )glBegin );
> =A0 =A0 =A0 =A0 gluTessCallback( _tessPtr, GLU_TESS_END, ( GLvoid( * )
> ( ... ) )glEnd );
> =A0 =A0 =A0 =A0 gluTessCallback( _tessPtr, GLU_TESS_VERTEX, ( GLvoid( *
)
> ( ... ) )glVertex3fv );
> =A0 =A0 =A0 =A0 gluTessCallback( _tessPtr, GLU_TESS_COMBINE, ( GLvoid( *
=
)
> ( ... ) )combineCallback );
> =A0 =A0 =A0 =A0 gluTessCallback( _tessPtr, GLU_TESS_ERROR, ( GLvoid( * )
> ( ... ) )tessError );
>
> same code for linux ****t:
> =A0 =A0 =A0 =A0 gluTessCallback( _tessPtr, GLU_TESS_BEGIN, ( void( * )()
=
)glBegin );
> =A0 =A0 =A0 =A0 gluTessCallback( _tessPtr, GLU_TESS_END, ( void( * )()
)g=
lEnd );
> =A0 =A0 =A0 =A0 gluTessCallback( _tessPtr, GLU_TESS_VERTEX, ( void( * )
> () )glVertex3fv );
> =A0 =A0 =A0 =A0 gluTessCallback( _tessPtr, GLU_TESS_COMBINE, ( void( * )
> () )combineCallback );
> =A0 =A0 =A0 =A0 gluTessCallback( _tessPtr, GLU_TESS_ERROR, ( void( * )
> () )tessError );
And the verts are not getting destroyed before endTess().


|