Hi Bobby,
>I've read in one of the faqs on j3d.org that most PC video cards (including
>all Voodoo based cards) don't support OpenGL acceleration in windowed mode.
>I'm assuming the same is true of my RagePro, since my demo runs like a
>wounded dog on it. The DirectX beta version of Java3D gives me a garbled
>error message telling me to "change to bit mode color" (the number of bits
>is an empty space). None of the video card settings I've tried eliminate
>this message.
>
Please make sure that you are running at least 16 bit color mode under
win2000 and win98 which D3D support (not winNT). There are a few case
which the J3D will suggest for another screen resolution :
(1) If your graphics card did not support >= 16 bit color mode at all :
"Your graphics card did not support >= 16 bit color mode which Java 3D required."
(2) Your graphics card support >= 16 bit color mode but current display mode
is < 16 bit color
"Please switch your display mode to at least 16 bit color depth.",
(3)
In createDevice()
sprintf(s, "Fail to create 3D Device compatible with your Z buffer depth. Please switch
your display mode to %ld bit color.", ddpfZBuffer.dwZBufferBitDepth)
(4) If the current mode did not support the best hardware acceleration
e.g.
if you graphics card support TnLHardware in 24 bit mode but
current 16 bit mode support Hardware/Emulation only. You will
see
"For best performance using hardware-accelerated
rasterizing/transformation/lighting mode, please switch display mode to 24 bit color"
(5) If you specific a device in property -Dj3d.d3ddevice
but that device only support in other color mode. You will see
sprintf(s, "You device did not compatible to current display mode. Please switch
your display mode to %s bit color.", mode);
In your case, I guess it is either (3) assume your did not specific
any -Dj3d.d3ddevice property in the command line. Since in case
(4) it should only output a warning message in the dos prompt and
continue.
Now in case (3) createDevice() will check to see if device renderingBitDepth
is compatible with the current display mode using
ddDeviceDesc.dwDeviceRenderBitDepth
so if current display depth is 24 bit
dwDeviceRenderBitDepth & DDBD_24
should be > 0 if compatible.
If not compatible, DirectX will suggest another display mode using:
if (dwDeviceRenderBitDepth & DDBD_16) {
strcat(s,"16");
...
} else if (dwDeviceRenderBitDepth & DDBD_24) {
strcat(s,"24");
....
} else if (dwDeviceRenderBitDepth & DDBD_32) {
strcat(s,"32");
....
}
Since you mention that the box display garble bit color, it is
obviously that the graphics card did not return the correct
information and all the above three cases fail. And the only
constant which we did not check is DDBD_8 which I think it
should not happen since case (2) is already eliminated this
one and return immediately.
So I guess there may be a bug in RagePro in DirectX driver
which confuse J3D.
Are you using 8 bit or 16 bit color mode in RagePro card
when you see this problem ? What happen if you switch to
16/24 bit color mode ?
Thanks.
- Kelvin
-------------
Java 3D Team
Sun Microsystems Inc.
===========================================================================
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".