Java3d 1.6.0-pre12 released: requires jogl 2.3.1

classic Classic list List threaded Threaded
45 messages Options
123
Reply | Threaded
Open this post in threaded view
|

Re: Java3d 1.6.0-pre12 released: requires jogl 2.3.1

hharrison
Java3D 1.5.2 almost certainly used the Direct3D backend in this case, not the opengl backend.

Harvey
Reply | Threaded
Open this post in threaded view
|

Re: Java3d 1.6.0-pre12 released: requires jogl 2.3.1

Manu
gouessej wrote
Java3D 1.6.0 is more robust than Java3D 1.5 as it relies on JOGL which contains numerous renderer quirks with no equivalent in the buggy native renderers of Java3D 1.5. I don't see how Java3D 1.5 could work better as OpenGL was used by default in it in some cases and the Direct3D renderer was by far the most buggy part of Java3D.
Maybe Direct3D renderer is buggy in some cases, but I can assure you that forcing Java3D to run with Direct3D helped many Sweet Home 3D users when it didn't work in default configuration. Maybe those users wouldn't have any problem with Java3D 1.6 nowadays, but as long as they didn't tested it, nobody knows.

gouessej wrote
There are other means of testing Java applications on a Mac but under different operating systems [...]
I know the solutions you propose but I'd rather avoid rebooting my computer each time I want to test Sweet Home 3D under Windows or Linux.

gouessej wrote
According to your own post about Java3D 1.5.1 and Parallels, the native OpenGL renderer detected only the crappy Microsoft GDI renderer (OpenGL 1.1). Was it true with Java3D 1.5.2 and the latest version of Parallels too?
Sorry I have no idea. The post you quote was written more than 7 years ago!

hharrison wrote
Java3D 1.5.2 almost certainly used the Direct3D backend in this case, not the opengl backend.
Sorry Harvey, but I don't think it's the case. First, I actually never saw the Direct3D switch work automatically, and anyway it's not even available under Windows 64 bit with which I work most of the time.


Anyway, since everybody here seems to refuse to consider this issue as a bug that could happen with other drivers, I'll stop reporting my problem here every year. Either I'll try to investigate the problem myself in Java3D, or wait for a fix in Parallels, and I'll tell you once it's fixed. Meanwhile, I'll continue to use Java3D 1.6 only under Mac OS X.
Emmanuel Puybaret
Reply | Threaded
Open this post in threaded view
|

Re: Java3d 1.6.0-pre12 released: requires jogl 2.3.1

hharrison
Manu wrote

hharrison wrote
Java3D 1.5.2 almost certainly used the Direct3D backend in this case, not the opengl backend.
Sorry Harvey, but I don't think it's the case. First, I actually never saw the Direct3D switch work automatically, and anyway it's not even available under Windows 64 bit with which I work most of the time.


Anyway, since everybody here seems to refuse to consider this issue as a bug that could happen with other drivers, I'll stop reporting my problem here every year. Either I'll try to investigate the problem myself in Java3D, or wait for a fix in Parallels, and I'll tell you once it's fixed. Meanwhile, I'll continue to use Java3D 1.6 only under Mac OS X.
Sorry, it's been a few years and I didn't realize you were speaking of 64-bit windows.

In that case, you were/are getting the native OpenGL backend w/ Java3D 1.5.2, it was only 32-bit that defaulted to Direct3D.

I really wish we could catch this error, but that's kind of the problem with driver bugs, it just segfaults in the native bits, and there's nothing you can do to catch it on the Java side, it's vm failure time :-(

WRT OpenGL versions, I'd actually like to someday rely on having OpenGL 2.1 as the miniumum version, but I'm not going to go breaking the OpenGL 1.2/1.3/1.4 pathways without having enough time to fix things up for people, so it's very unlikely to change ever.

One exercise that would be instructive would be to read through the old OpenGL native backend for Java3D and compare the initializtion sequence vs the jogl backend, maybe there's something there that was missed when porting.


Harvey
Reply | Threaded
Open this post in threaded view
|

Re: Java3d 1.6.0-pre12 released: requires jogl 2.3.1

hharrison
I do find it interesting that the old OpenGL backend used to use glColor4fv and built a float array to pass in,
rather than the joglpipeline approach of using glColor4f....that would be a very quick experiment to try and see if maybe it is only glColor4f that is buggy in parallels.

Harvey
Reply | Threaded
Open this post in threaded view
|

Re: Java3d 1.6.0-pre12 released: requires jogl 2.3.1

Sven Gothel
Administrator
In reply to this post by hharrison
On 04/27/2015 06:44 PM, hharrison [via jogamp] wrote:

>     Manu wrote
>
>         hharrison wrote
>         Java3D 1.5.2 almost certainly used the Direct3D backend in this case,
>         not the opengl backend.
>
>     Sorry Harvey, but I don't think it's the case. First, I actually never saw
>     the Direct3D switch work automatically, and anyway it's not even available
>     under Windows 64 bit with which I work most of the time.
>
>
>     Anyway, since everybody here seems to refuse to consider this issue as a
>     bug that could happen with other drivers, I'll stop reporting my problem
>     here every year. Either I'll try to investigate the problem myself in
>     Java3D, or wait for a fix in Parallels, and I'll tell you once it's fixed.
>     Meanwhile, I'll continue to use Java3D 1.6 only under Mac OS X.
>
> Sorry, it's been a few years and I didn't realize you were speaking of 64-bit
> windows.
>
> In that case, you were/are getting the native OpenGL backend w/ Java3D 1.5.2,
> it was only 32-bit that defaulted to Direct3D.
>
> I really wish we could catch this error, but that's kind of the problem with
> driver bugs, it just segfaults in the native bits, and there's nothing you can
> do to catch it on the Java side, it's vm failure time :-(
>
> WRT OpenGL versions, I'd actually like to someday rely on having OpenGL 2.1 as
> the miniumum version, but I'm not going to go breaking the OpenGL 1.2/1.3/1.4
> pathways without having enough time to fix things up for people, so it's very
> unlikely to change ever.
Another workaround would be to use a Mesa software renderer
as a fallback, instead of using MS OpenGL 1.1.
Some follow this approach as the 'last exit' strategy.

No, I am not considering deploying a Mesa blob for Windows here,
but application may like to do so ..

~Sven


signature.asc (828 bytes) Download Attachment
Reply | Threaded
Open this post in threaded view
|

Re: Java3d 1.6.0-pre12 released: requires jogl 2.3.1

gouessej
Administrator
In reply to this post by Manu
Manu wrote
Anyway, since everybody here seems to refuse to consider this issue as a bug that could happen with other drivers, I'll stop reporting my problem here every year. Either I'll try to investigate the problem myself in Java3D, or wait for a fix in Parallels, and I'll tell you once it's fixed. Meanwhile, I'll continue to use Java3D 1.6 only under Mac OS X.
"this issue as a bug that could happen with other drivers" is an hypothesis, it has never been proven. Do you realize that it crashes on the very first OpenGL call? Parallels costs about 80 euro (less for a renewal of license); as I have no mean to reproduce this bug with another driver, do you expect me from paying 80 euro to fix a bug in a commercial product? Anyway, thank you for the reminder about the native OpenGL renderer under Windows 32-bit. If you expect a fix from Parallels, maybe you should report a bug against it.
Julien Gouesse | Personal blog | Website
Reply | Threaded
Open this post in threaded view
|

Re: Java3d 1.6.0-pre12 released: requires jogl 2.3.1

Manu
Hi,

I followed your suggestions and posted a message in Parallels Desktop forum as well as a bug report two months ago. As Parallels team didn't answer to this issue yet, I tried yesterday the same basic Java 3D program (it displays a simple cube) in VirtualBox 5.0 since it's free.
The program didn't crash but it still doesn't work whether you activate or not 3D acceleration in VirtualBox.
javax.media.j3d.IllegalRenderingStateException: Java 3D ERROR : OpenGL 1.2 or better is required (GL_VERSION=1.1)
        at javax.media.j3d.JoglPipeline.setupCanvasProperties(JoglPipeline.java:8083)
        at javax.media.j3d.JoglPipeline.createNewContext(JoglPipeline.java:6440)
        at javax.media.j3d.Canvas3D.createNewContext(Canvas3D.java:4602)
        at javax.media.j3d.Canvas3D.createNewContext(Canvas3D.java:2376)
        at javax.media.j3d.Renderer.doWork(Renderer.java:881)
        at javax.media.j3d.J3dThread.run(J3dThread.java:271)

DefaultRenderingErrorListener.errorOccurred:
CONTEXT_CREATION_ERROR: Renderer: Error creating Canvas3D graphics context
graphicsDevice = D3DGraphicsDevice[screen=0]
canvas = javax.media.j3d.Canvas3D[canvas0,0,0,184x161]
Can this issue be fixed, or supporting older GL version is out of question?
Emmanuel Puybaret
Reply | Threaded
Open this post in threaded view
|

Re: Java3d 1.6.0-pre12 released: requires jogl 2.3.1

gouessej
Administrator
Thank you very much for investigating.

However, the root cause seems to be completely different. VirtualBox 5.0 picks the crappy Microsoft GDI renderer, that's why you see "GL_VERSION=1.1".

Supporting older versions of OpenGL is impossible because OpenGL 1.1 doesn't support the retained mode (only the immediate mode) and Java3D is entirely relying on this retained mode since its very beginning like all scenegraph APIs written in Java since the end of the nineties (even before the creation of JOGL).

Please ensure that the OpenGL driver provided by the GPU manufacturer is installed. Then, run Xerxes' short example:
http://jogamp.org/git/?p=jogl-demos.git;a=blob;f=src/demos/es2/RawGL2ES2demo.java;hb=HEAD

If it works (hoping that your hardware supports at least OpenGL 2.1 with an appropriate driver), it will confirm that the problem comes from Java3D, i.e something favours or forces the use of the Microsoft GDI driver even though it's not the only one available. If it's really the culprit, it will be possible to fix it but whatever we do, Java3D won't work without a correct OpenGL driver.

I already used VirtualBox in the past, I'm almost sure that it's not to blame here but please activate 3D acceleration in it anyway. Tick the check box "Enable 3D Acceleration".
Julien Gouesse | Personal blog | Website
Reply | Threaded
Open this post in threaded view
|

Re: Java3d 1.6.0-pre12 released: requires jogl 2.3.1

gouessej
Administrator
In reply to this post by Manu
Reply | Threaded
Open this post in threaded view
|

Re: Java3d 1.6.0-pre12 released: requires jogl 2.3.1

Manu
In reply to this post by gouessej
gouessej wrote
Please ensure that the OpenGL driver provided by the GPU manufacturer is
installed. Then, run Xerxes' short example:
http://jogamp.org/git/?p=jogl-demos.git;a=blob;f=src/demos/es2/RawGL2ES2demo.java;hb=HEAD
As VirtualBox 5..0 was released very recently, I guess the drivers proposed Oracle are up to date!  Is there a Xerces executable available somewhere?

gouessej wrote
Tick the check box "Enable 3D Acceleration".
I tried that but it gives the same stack trace.
Emmanuel Puybaret
Reply | Threaded
Open this post in threaded view
|

Re: Java3d 1.6.0-pre12 released: requires jogl 2.3.1

gouessej
Administrator
This post was updated on .
Manu wrote
As VirtualBox 5..0 was released very recently, I guess the drivers proposed Oracle are up to date!  
I was talking about the OpenGL driver provided by NVIDIA, AMD or Intel.

Manu wrote
Is there a Xerces executable available somewhere?
No but you can try to run those applets:
http://jogamp.org/deployment/jogamp-current/jogl-test-applets.html
Please tell us which OpenGL version detects the very first one.

Manu wrote
gouessej wrote
Tick the check box "Enable 3D Acceleration".
I tried that but it gives the same stack trace.
Please read carefully the link I gave above about VirtualBox attempting to use the host's 3D hardware. You have to install the OpenGL driver under Windows and to configure VirtualBox so that it relies on it.
Julien Gouesse | Personal blog | Website
Reply | Threaded
Open this post in threaded view
|

Re: Java3d 1.6.0-pre12 released: requires jogl 2.3.1

Xerxes Rånby
In reply to this post by Manu
Manu wrote
gouessej wrote
Please ensure that the OpenGL driver provided by the GPU manufacturer is
installed. Then, run Xerxes' short example:
http://jogamp.org/git/?p=jogl-demos.git;a=blob;f=src/demos/es2/RawGL2ES2demo.java;hb=HEAD
As VirtualBox 5..0 was released very recently, I guess the drivers proposed Oracle are up to date!  Is there a Xerces executable available somewhere?

gouessej wrote
Tick the check box "Enable 3D Acceleration".
I tried that but it gives the same stack trace.
The RawGL2ES2demo is part of the jogl-demos.7z (that contain ~200+ demos) you may run it from the command line:

wget http://jogamp.org/deployment/jogamp-current/archive/jogamp-all-platforms.7z
wget http://jogamp.org/deployment/jogamp-current/archive/jogl-demos.7z
7z x jogamp-all-platforms.7z
7z x jogl-demos.7z
java -cp jogl-demos/jar/jogl-demos.jar:jogamp-all-platforms/jar/gluegen-rt.jar:jogamp-all-platforms/jar/jogl-all.jar demos.es2.RawGL2ES2demo
Reply | Threaded
Open this post in threaded view
|

Re: Java3d 1.6.0-pre12 released: requires jogl 2.3.1

Xerxes Rånby
This post was updated on .
We should consider compiling and bundle "angle" for windows users. Angle could make JOGL applications using OpenGL work on virtualized windows platforms where no proper opengl driver is installed.
https://chromium.googlesource.com/angle/angle

build instructions:
http://gpupowered.org/node/29
Reply | Threaded
Open this post in threaded view
|

Re: Java3d 1.6.0-pre12 released: requires jogl 2.3.1

gouessej
Administrator
It's a good idea but some versions of ANGLE bundled by Chromium just crashed JOGL in the past :s Moreover, it should be only a fallback as it doesn't encourage the GPU manufacturer to provide better OpenGL drivers.
Julien Gouesse | Personal blog | Website
Reply | Threaded
Open this post in threaded view
|

Re: Java3d 1.6.0-pre12 released: requires jogl 2.3.1

Xerxes Rånby
It appears that Microsoft considers Angle the solution to run OpenGL ES content on their Windows OS + desktop/tablets/phones and IOT platforms.

Microsoft maintains a fork of the chromium source code and provides Angle binary's distributed using "nuget" ".net" packages.
https://github.com/MSOpenTech/angle/
Reply | Threaded
Open this post in threaded view
|

Re: Java3d 1.6.0-pre12 released: requires jogl 2.3.1

gouessej
Administrator
VS seems to be necessary to build ANGLE with this fork :(
Julien Gouesse | Personal blog | Website
Reply | Threaded
Open this post in threaded view
|

Re: Java3d 1.6.0-pre12 released: requires jogl 2.3.1

Xerxes Rånby
In reply to this post by gouessej
gouessej wrote
It's a good idea but some versions of ANGLE bundled by Chromium just crashed JOGL in the past :s Moreover, it should be only a fallback as it doesn't encourage the GPU manufacturer to provide better OpenGL drivers.
I have earmarked the idea:
https://jogamp.org/bugzilla/show_bug.cgi?id=1179
Reply | Threaded
Open this post in threaded view
|

Re: Java3d 1.6.0-pre12 released: requires jogl 2.3.1

slajar
I just came across angle and I though that it would be a great idea to be supported from jogl on windows. That would probably solve a lot of nasty issues with not supported OpenGL drivers espacially from Intel.

Now, I found that you guys already discussing it. Thumbs up!

What I don't understand is, what we need to do to get this work. The google angle sources are pretty crypted. As far as I understood the concept, it has api level compatibility. That means we would need to recompile jogle native sources with their bindings. Furthermore, we'd need some kind of a proxy concept to switch between real opengl and angle.
Reply | Threaded
Open this post in threaded view
|

Re: Java3d 1.6.0-pre12 released: requires jogl 2.3.1

gouessej
Administrator
slajar wrote
I just came across angle and I though that it would be a great idea to be supported from jogl on windows. That would probably solve a lot of nasty issues with not supported OpenGL drivers espacially from Intel.

Now, I found that you guys already discussing it. Thumbs up!
In my humble opinion, the bigger concern isn't the OpenGL drivers of Intel even though I remember the performance problems they had on their OpenGL 1.5 GPUs. ANGLE could be useful when the end users don't install any OpenGL driver because Microsoft GDI renderer only supports OpenGL 1.1 which isn't enough for Java3D.

slajar wrote
What I don't understand is, what we need to do to get this work. The google angle sources are pretty crypted. As far as I understood the concept, it has api level compatibility. That means we would need to recompile jogle native sources with their bindings. Furthermore, we'd need some kind of a proxy concept to switch between real opengl and angle.
Personally, as I would use ANGLE as a replacement for Microsoft GDI renderer, I don't see the need of a new concept. It is already possible to favor hardware OpenGL rasterizer or not in GLProfile. Java3D will just pick the most capable profile.

Edit.: ANGLE exposes OpenGL ES 2.0. As Java3D uses the fixed pipeline, it won't benefit of it immediately. I mean it's not trivial, the fixed pipeline can be emulated by JOGL when OpenGL ES 2 is available but if it requires too much work, it will implemented in JogAmp's Ardor3D Continuation and not in (JogAmp's) Java3D (Continuation).
Julien Gouesse | Personal blog | Website
Reply | Threaded
Open this post in threaded view
|

Re: Java3d 1.6.0-pre12 released: requires jogl 2.3.1

bjoern
In reply to this post by Xerxes Rånby
@Xerxes: Sorry that I did not check back for a longer time and did not see your question. I coded now a simple example how to work with Java3D and stereo. You can find it in this thread:

http://forum.jogamp.org/Java3D-stereo-td4029914.html#a4035213
123