[Development] OpenGL in Qt 5.1 and onwards

Sletta Gunnar Gunnar.Sletta at digia.com
Tue Jan 8 09:31:10 CET 2013


On Jan 7, 2013, at 11:16 AM, Sean Harmer <sean.harmer at kdab.com> wrote:
> 
> Given the current contents of QtGui and the state of Qt3D I would suggest the 
> following:
> 
> QtGui continues to be the home for low-level OpenGL convenience classes. That 
> is classes that have a pretty much 1:1 mapping to OpenGL objects. So things 
> like:
> 
> * Shaders
> * Query objects
> * Texture and Sampler
> * Vertex Array Objects
> * Buffer objects
> * Framebuffer objects

I agree.

> 
> Some of these are already used by QQ2, some are not but could be in the 
> future.
> 
> For higher-level abstractions I would suggest that we refactor and split Qt3D 
> into a number of more fine-grained and targeted libraries. Right now it is 
> quite monolithic consisting of the C++ threed library and the QML integration.
> 
> Some ideas for these:
> 
> * 3D maths (float and double versions) (or could extend QtGui 3D maths)

I would really like us to consider Eigen here. I have not used it personally, but it looks pretty solid and there has been quite a lot of pushing for the use of this already on this list and others. Since this is in the scope of a 3D add-on library, then the additional dependency is not a problem.

> * OpenGL Enablers: Material; Texture unit configuration/management etc
> * Geometry building/manipulation
> * Encapsulation: bounding volumes, intersection testing, ray casting etc
> * Animation
> * Scene Management
> * QML integration

> * OGRE/OpenSceneGraph integrations

This is perhaps another candidate to sit higher up in the stack, at least one that should not depend on too much other than QtGui and QOpenGLContext and/or Qt Quick 2.0. Integrating OGRE and OSG with QtQuick 2 in a "give me a surface and GL context" kind of manner is something I consider a very likely scenario.

> 
> I was hoping to get some refactoring of Qt3D done over the vacations but then 
> came down with child-induced illness, bah!
> 
> For the OpenGL version and extension classes, I think I would prefer to see 
> these in QtGui as it makes sense to obtain objects of these types directly 
> from the context. However, if it bloats QtGui too much then we can make use of 
> a simple factory class and put them into a library inside of Qt3D.

If they are anyway behind an OPENGL_ES define, then I don't see a big problem in terms of bloat. On desktop we can afford the extra symbols and on embedded they will not exist. Unless we are talking about 1-2Mb extra of course...

cheers,
Gunnar

> 
> We could redress the balance with Qt6 of course ;)
> 
> Cheers,
> 
> Sean
> 
> _______________________________________________
> Development mailing list
> Development at qt-project.org
> http://lists.qt-project.org/mailman/listinfo/development




More information about the Development mailing list