Dear team members,

Happy and successful year 2015 to all of you!

As you all surely know, our hopes from 2013/14 that ANGLE remedies us from
issues with outdated hardware by translating to any hardware that is
capable of running "any" kind of DirectX9 was too optimistic, so the older
OpenGL2.0 (and less) GLSL1.20 /DirectX ps_2 - capable hardware is out of
business except for using Mesa-based CPU rendering.

Qt5.4 seems to bring at least a chance to clean up this ugly OpenGL
version mess with up to 5 separate windows installers. However, some
effort seems required for that which goes way beyond my Qt knowledge (and
free time to learn it :-(

1) QtDeclarative has been deprecated a while ago and documentation links
are (deliberately I suppose) getting sparse. QGL... classes are
deprecated. We are still using them, but replacements have been made
available for most, if not all, functionality. Not having much experience
with these Qt window/widget classes does not help in finding correct
replacements.

2) Classes which need to draw with OpenGL gl... calls should be derived
from QOpenGLFunctions. The current situation is this #define nightmare in
StelOpenGL.hpp. What was the specific reason to do that and not follow the
documented and recommended path?

3) Qt5.4 brings a change to allow building binaries for the most widely
used platform that can locate and bind either native OpenGL, or OpenGL ES
(ANGLE) or fallback to software OpenGL (MESA) libraries on startup. This
however requires cleaning up issue (2) in the Qt way.

4) Just a note from trying my luck with compiling Qt5.4 on a Raspberry Pi.
The change from compile-time to runtime resolution of OpenGL functions
caused removal of a compile-time definition of QT_OPENGL_ES_2, which
likely breaks building at least core/external/glues_stel with an ANGLE or
other ES2 environment. I can build fine without a change in Windows with
Qt5.4/MinGW/OpenGL. Maybe for now you just need to add this #define
globally using

  SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -DQT_OPENGL_ES_2")
  SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DQT_OPENGL_ES_2")

in CMakeLists.txt when building an ANGLE-only binary, but in the longer
run, this is again linked to issue (2): all classes using gl... should be
derived from OpenGLFunctions (and initialized in their constructors), and
it should be enough to #include <qtopengl.h> instead of <GL/gl.h> etc.


I think therefore this current situation can be improved massively, but it
requires some effort. This must be the Next Big Thing for V0.14.

I tried my luck over the holidays but am stuck and had to see that I
cannot complete this by tonight. Is there anyone more fluent in /
knowledgeable about the current Qt GUI (i.e. QtQuick2,
QtOpenGLWidget/-Window, ...) classes able to do these necessary steps?  I
leave my branch open as qt54-qtify, where I already replaced QtDeclarative
with QtQuick+QtQuickwidgets+QtQml, but got stuck with various class
changes, and I am of course not sure if my decisions of replacement
classes were the best. So maybe either start from here or anew from trunk.
I must currently cease work on this.

One further note on any possible replacement classes:
My Raspberry experiment indicated that Stellarium can be compiled on this
OpenGL ES2 embedded Linux system, but fails with a startup message:

EGLFS: OpenGL windows cannot be mixed with others.

What can be done or has to be avoided can hopefully be taken into account
when deciding on the new MainWindow pedigree (if we are interested in this
and related embedded Linux platforms):

http://comments.gmane.org/gmane.comp.lib.qt.user/11116
http://qt-project.org/forums/viewthread/44673


Good luck to all your efforts, and I hope for a good future for this
wonderful application.

Georg




------------------------------------------------------------------------------
Dive into the World of Parallel Programming! The Go Parallel Website,
sponsored by Intel and developed in partnership with Slashdot Media, is your
hub for all things parallel software development, from weekly thought
leadership blogs to news, videos, case studies, tutorials and more. Take a
look and join the conversation now. http://goparallel.sourceforge.net
_______________________________________________
Stellarium-pubdevel mailing list
Stellarium-pubdevel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/stellarium-pubdevel

Reply via email to