GillesDebunne / libQGLViewer

libQGLViewer is an open source C++ library based on Qt that eases the creation of OpenGL 3D viewers.
Other
245 stars 94 forks source link

Support for OpenGL 3.x #14

Closed JWHennessey closed 9 years ago

JWHennessey commented 9 years ago

Hello,

Thanks for developing the library, it seems great and was very simple to get up and running.

I'm curious if it is possible to use the library with modern OpenGL (3.x) e.g using shaders etc? The examples I have seen use the fixed functionality pipeline and my initial attempts to integrate VBOs aren't working.

Many thanks

lrineau commented 9 years ago

As far as I know, the implementation of libQGLViewer uses legacy OpenGL methods that control the fixed function pipeline. It cannot compile in OpenGL 3.2 core profile, or in OpenGL ES 2 and later.

GeometryFactory has hired an intern student (@maxGimeno) for six months, on porting CGAL demos to Android (and thus to OpenGL ES). See short job description Porting Demo Applications to Android using Qt5. I am the advisor of the internship.

As all CGAL 3D demos use Qt4 and libQGLViewer, the internship has two important technical steps:

@GillesDebunne has been made aware of our attempt to port libQGLViewer to OpenGL ES 2. For the moment, @maxGimeno had to disable (using macros like #ifndef ANDROID) big part of the libQGLViewer API. Significant part of the API (like for example the picking) cannot be ported to the modern OpenGL API, at least not in a backward-compatible way.

Maxime and I are open to discussions.

JWHennessey commented 9 years ago

Thanks for the response. Good to know that the libQGLViewer will be ported to QT5 soon. I'll keep an eye out for updates but for my current project I'll probably implement the essential functionality myself. Thanks.

Edit: I mean OpenGL 3.x not QT5.

GillesDebunne commented 9 years ago

Quick note: Qt5 is supported by libQGLViewer since version 2.4.0, May 2013 (the ANDROID case is different).

As for OpenGL 3.x, it definitively needs to be done, but it would require external contributions. In the process, a lot of the legacy code (Vec, Quaternion, Dom, ...) should be removed and the library could be simplified. @lrineau, maybe we can chat about what's done on your side?