----- Original Message -----
From: [EMAIL PROTECTED]
Sent: Thursday, July 12, 2001 5:54 PM
To: Discussion list for Java 3D API
Subject: JVM crashes when textures are loaded????
JVM occasionally crashes with the error message below. The JVM crashes about one time out of ten executions. I place a snippet of code below, hopping someone could give me a clue.
- I have have the latest drivers.
- I am using the OpenGL version of Java3D.
- It does not appear to be a memory leak.
- All the files are present.
- The program do not crash on every execution.
What is all this stuff below I am not using any of it?
Michael Carter
---------------
java.lang.NullPointerException
at javax.media.j3d.RenderMolecule.addRenderAtom(RenderMolecule.java:1088)
at javax.media.j3d.RenderBin.findRenderMolecule(RenderBin.java:3449)
at javax.media.j3d.RenderBin.reInsertRenderAtom(RenderBin.java:2957)
at javax.media.j3d.RenderBin.reInsertTextureBin(RenderBin.java:2951)
at javax.media.j3d.RenderBin.reInsertAttributeBin(RenderBin.java:2943)
at javax.media.j3d.RenderBin.processShapeChanged(RenderBin.java:1629)
at javax.media.j3d.RenderBin.processMessages(RenderBin.java:1060)
// code where I believe the error is:
void getTextures()
{
System.out.println("attempt to load texture from file: " + "sky.jpg" );
tex = new TextureLoader("sky.jpg",
new String("RGB"), this);
textureAppear = new Appearance[5] ;
String[] filename = new String[6] ;
filename[0] = new String("computer.jpg") ;
filename[1] = new String("circuit2.jpg") ;
filename[2] = new String("wall.jpg") ;
filename[3] = new String("wall2.jpg") ;
filename[4] = new String("floor.jpg") ;
for( int i = 0; i < 5; i++)
{
System.out.println("attempt to load texture from file: "+filename[i]);
TextureLoader loader = new TextureLoader(filename[i], this);
ImageComponent2D image = loader.getImage();
if(image == null)
System.out.println("load failed for texture: "+filename[i]) ;
Texture2D texture = new Texture2D(Texture.BASE_LEVEL, Texture.RGBA,
image.getWidth(), image.getHeight()) ;
texture.setImage(0, image);
texture.setEnable(true);
texture.setMagFilter(Texture.BASE_LEVEL_LINEAR);
texture.setMinFilter(Texture.BASE_LEVEL_LINEAR);
textureAppear[i] = new Appearance() ;
textureAppear[i].setTexture(texture) ;
}
}