Hey
folks,
Our software uses
Java 3D to do some offline preprocessing of 3D data, before it is viewed using a
Java 3D-based applet. This preprocessing is typically done in the
background on a remote Windows server (nothing is actually displayed during
this process). Part of the preprocessing phase involves the use of two
Java 3D utility classes, j3d.utils.compression.GeometryCompressor and
j3d.utils.geometry.Stripifier.
We have noticed that
the preprocessing steps can crash the JVM without warning if a bad graphics card
driver is installed on the server. My understanding is that the only way
that Java 3D can interact with the graphics card driver (and possibly induce
such a crash) is through native code, specifically j3d.dll. This DLL is
linked to opengl32.dll, which can invoke the driver.
So my question is this: When does
Java 3D use native code? (in other words, under what circumstances does Java 3D
load j3d.dll?) I don't think that using GeometryCompressor or Stripifier
should invoke native code, but perhaps we are doing something else that causes
Java 3D to load that DLL. This is probably a question that only someone
familiar with the Java 3D code would be able to answer (e.g. a member of
the team), but I'd also like to hear from anyone who uses Java 3D for offline
processing.
Ideally, we want a situation where we use Java 3D in
the background without actually invoking any native code, which could be
dependent on the graphics card driver (in other words, we don't want the
server's graphics hardware to impact our preprocessing
steps).
Thanks in advance
for any help.
-
Mauricio
