QOpenGLWidget and ANGLE



  • Hello,

    my question is, in general, how to enable ANGLE wrapper and how to know if ANGLE is "running".

    I use QGraphicsScene/View and QOpenGLWidget as viewport. I would like to improve performance (scene can contains several thousand moving objects) by ANGLE. If I understand correctly, ANGLE should wrap OpenGL calling to DirectX.

    On Windows (8.1) I compile both by MSVC2013 in Visual Studio 2013 with Qt Visual Studio add-in and by MINGW with Qt 5.5. I dont see any difference between these two options. When I run compiled program with RivaTuner FPS detection, it shows in both cases OGL (but when I play games it shows D3D9). For me it looks like the program renders by OpenGL and not DirectX.

    So, do I understand ANGLE wrong or it is not enabled at all? And if, how can I enabled it.

    Thank you for your answers.


  • Lifetime Qt Champion

    Hi and welcome to devnet,

    ANGLE is used to translate OpenGL ES 2.0 to DirectX not Desktop OpenGL. The ANGLE backend is automatically selected when there's no desktop OpenGL available but for your application to work correctly with ANGLE, it must use exclusively OpenGL ES 2.0.



  • Ok, thanks for answer. I suppose there is no simple way to use OpenGL ES 2.0 and classic QGraphicsScene/View framework (with QPixmap etc.). And if there is some non-simple way to achieve this, is it possible to improve performance on Windows by this way?

    Thank you for answers.


  • Lifetime Qt Champion

    Did you took a look at the 40000 Chips example ? That might give you clues on how to handle high number of objects.



  • I saw it and took some inspiration, but at the moment a cannot use all techniques of this example. I am working on city building game where there is lots of (moving) objects. In my worst performance test scenario I have slightly over 30 FPS (acceptable) but on gtx970, so I am little worried what will happen on worse cards.


Log in to reply
 

Looks like your connection to Qt Forum was lost, please wait while we try to reconnect.