Jacob,

I took another look at your code and ran it on my machine here. I couldn't
help myself... ;-)

1. You are setting the clipping distances correctly.

2. We don't seem to be getting any real appreciable benefit from
compilation, and I can't get the compilation debug properties to output any
info either. Perhaps someone from SUN can comment on this?

3. On my machine the frame-rate is being limited by the V-sync on the
monitor. When you disable V-sync the framerate goes from ~85 Hz to ~320 Hz.
Presumably this does not explain your performance differences however, as
all the OpenGL applications should have been subject to the same limitation.
As you can see below all the other changes I made had no appreciable
effect - the scene is too simple for my GeForce II Ultra.

Original:

Elapsed time: 36.353 sec.
Average frame rate: 82.52414 fps.

===
Disabled compile - no change in framerate!

===
Using a Behavior to move the Camera:

Elapsed time: 35.982 sec.
Average frame rate: 83.37502 fps.

===
Using ColorCubes instead of texture mapped cubes:

Elapsed time: 35.952 sec.
Average frame rate: 83.444595 fps.

===
Switch off V-Sync for the card

Elapsed time: 9.463 sec.
Average frame rate: 317.0242 fps.

Sincerely,

Daniel Selman

-----Original Message-----
From: Daniel Selman [mailto:[EMAIL PROTECTED]]
Sent: Wednesday, March 06, 2002 1:06 AM
To: [EMAIL PROTECTED]
Subject: Java 3D performance.


Jacob,

Nice work on the report. Very professionally done. I'm curious about the
considerable performance gap you saw between GL4Java and Java 3D. Here are
some thoughts:

Ensure frustum is set correctly (common error) - it is NOT defined using
virtual coordinates:
http://www.starfireresearch.com/services/java3d/supplementalDocumentation.ht
ml#alternate

"In simple terms this means that for a 1024x768 screen all clipping
distances are actually seven times further than what you set them at. - John
Wright"

I didn't check your other code, but it could be that Java 3D is actually
rendering more of the scene than you think.

display method seems like it could be optimized. It performs several trig
functions, calls lookAt and invert on a matrix etc. Presumably this is
called on every frame.

Turn on the scenegraph compilation debug flags to ensure compilation is
happening:
http://www.j3d.org/implementation/properties.html
+ Javax.media.j3d.compileStats=true
+ Javax.media.j3d.compileVerbose=true

You could play with the j3d.renderlock property as well...

Using QuadArray for geometry may not be the fastest option. Why not try an
IndexedTriangleArray for example? A test using BY_REF with
j3d.optimizeForSpace=false would be interesting as well.

Anyway, good work!

Sincerely,

Daniel Selman

Author, Java 3D Programming
http://www.manning.com/selman

===========================================================================
To unsubscribe, send email to [EMAIL PROTECTED] and include in the body
of the message "signoff JAVA3D-INTEREST".  For general help, send email to
[EMAIL PROTECTED] and include in the body of the message "help".

Reply via email to