Bug 1179

Summary: Provide fallback OpenGL ES 2 & 3 implementation using lib ANGLE on Windows
Product: [JogAmp] Jogl Reporter: Xerxes Rånby <xerxes>
Component: windowsAssignee: Sven Gothel <sgothel>
Status: UNCONFIRMED ---    
Severity: enhancement CC: gouessej
Priority: ---    
Version: tbd   
Hardware: All   
OS: all   
Type: FEATURE SCM Refs:
Workaround: ---

Description Xerxes Rånby 2015-07-21 17:11:27 CEST
Microsoft ships windows with an old OpenGL 1.1 driver.

many web-browsers have started to depend on lib ANGLE to provide opengl es -> d3d in order to implement webgl.

JOGL may use lib ANGLE in order to provide a fallback for OpenGL ES 2 & 3 on Windows.

lib ANGLE sources is available from:
https://chromium.googlesource.com/angle/angle

Microsoft has cloned the chromium angle opengl -> d3d project and tease Windows developers to use it for all their opengl es needs.

https://msopentech.com/blog/2015/06/03/angle-for-windows-store-is-now-available-via-nuget/
https://github.com/MSOpenTech/angle
Comment 1 Sven Gothel 2015-07-28 14:41:15 CEST
Problem w/ ANGLE implementation as provided by many web browsers
(for example) is that it crashes w/ JOGL.
Hence it seems the provided ANGLE stuff is somewhat hacked
for browser purposes only.

A standalone test w/ ANGLE I once performed in 2013/2014?
was successful though.

However, b/c of above browser crash, we currently explicitly
avoid using ANGLE for ES profiles per default,
see GLProfile.enableANGLE 'jogl.enable.ANGLE'.

Providing a fallback ANGLE might solve the browser issue,
however - it also complicates initialization:
  - usually we prefer system-wide GLES libs
  - when to chose fallback ANGLE GLES?
Comment 2 Julien Gouesse 2015-08-07 12:04:07 CEST
The Microsoft fork of ANGLE uses VisualStudio, we would have to adapt the build scripts to our needs.

The existence of ANGLE mustn't discourage the GPU manufacturers to provide better OpenGL and OpenGL ES drivers, i.e a true OpenGL driver is still preferable.

In my humble opinion, as Sven reminded, the ANGLE native libraries provided by some web browsers can cause some crashes, I wouldn't use them. ANGLE causes a crash in TUER, I had to skip it to make it work on some old laptops under Windows XP 32-bit.

ANGLE should be loaded when there is only the Microsoft GDI renderer available or when there is no other solution to access to OpenGL under Windows.

Keep in mind that we should still find a solution to provide a feedback to the end user when there is no way to initialize JOGL as I suggested:
http://jogamp.org/log/irc/jogamp_20150806050528.html#l73
http://jogamp.org/log/irc/jogamp_20150806050528.html#l74

I should write another bug report for this enhancement.
Comment 3 Julien Gouesse 2015-08-13 15:14:56 CEST
Just as a reminder for Java3D users, I'm particularly reluctant to spend a lot of time in modifying Java3D to make it work with OpenGL ES 2.0 which would be necessary to benefit of ANGLE. The JOGL renderer of Java3D was written with the fixed pipeline in mind. JOGL is able to emulate the fixed pipeline in OpenGL ES 2 but such a big change goes beyond our plan, Java3D is actively maintained. It's already difficult to make something similar work in JogAmp's Ardor3D Continuation which has a "better" design, I don't imagine the headaches to do the same in Java3D.