While using the GLU tesselator with 700+ points, I encountered very
peculiar behavior. Above a certain amount of points, the end result of
the tesselation would be completely messed up. After reading the
comments in the Nvidia/DirectBuffer demo about the GC bug, I took a look
at the native code that handles a gluTessVertex call and found that no
copy is made of the data that is passed to this function. The OpenGL
manual states that a call to gluTessVertex only keeps a pointer to the
data array and does not make a copy itself. I assume that what's
happening in my program is that the garbage collector is moving around
(and probably even freeing) some of the coordinate arrays, because they
are neither pinned or copied. Is this assumption correct? If it is
correct will this be fixed any time soon? I know that the problem can be
resolved by using direct buffers, but i would like to have pre 1.4
compatibility.
Pepijn Van Eeckhoudt
|