It appears that glMultiDrawArrays is not available by default in QT's Opengl library. Is there anyway I can make it available in QT ?
Qt is only responsible for creating an OpenGL context, not for providing OpenGL calls.
Try using a loader library like gl3w or GLEW in order to access modern OpenGL features.
There is no such thing as Qt's OpenGL library, OpenGL is handled by your OS, Qt only provides a wrapper for platform-independent OpenGL Context and Window creation.
Whatever that function is available or not depends on your OpenGL drivers, OpenGL headers, etc.
Related
What is the difference between Qt versions with dynamic and desktop OpenGL? http://tver-soft.org/qt64
It is likley that this refers to the configure option that was set when they compiled Qt.
This option is explained in detail here: https://blog.qt.io/blog/2014/11/27/qt-weekly-21-dynamic-opengl-implementation-loading-in-qt-5-4/
To summarise, Qt can be compiled to use ether the desktop OpenGL (a direct interface to the graphics driver provided OpenGL version) or to use Angle (a version of OpenGL that uses directX to provide hardware GL support).
Using 'desktop' gives you the latest (and deprecated) OpenGL features where available, but some drivers do not work properly.
Qt now relies on OpenGL to do important 2D rendering and can be badly affected by faulty drivers. For this reason you have the safer option of Angle, safer but limited to OpenGL ES 2.0 functionality.
Dinamic is a new option that will select between them automatically at runtime on the user's machine. It does however mean that you will need to use the Qt OpenGL API (rather than e.g. GLEW) to access OpenGL.
If you are not going to use OpenGL directly in your code then you should chose dynamic.
You should also consider compiling the code for yourself, as you are trusting your and your user's security to tver-soft.org. Even without malicious intent these files may be a security risk.
When downloading from this site http://qt-project.org/downloads
There are different versions like versions with OpenGL and versions without OpenGL, what is the different between them ?
Some time ago Google did develop a OpenGL emulation wrapper called ANGLE, to implement conformant WebGL on systems without a proper OpenGL installation, yet with sufficient Direct3D support. Qt makes internally use of OpenGL in some modules/classes. The non OpenGL downloads of Qt are linked with ANGLE to reliably enable this, even without proper OpenGL drivers on the system. The OpenGL versions of the download use the systems native OpenGL.
Is OpenGL mandatory in order to run a Qt application made of QML pages ?
Well, an implementation of OpenGL ES 2 is mandatory for Qt Quick 2, but that doesn't mean you need to use native OpenGL. On Windows you really should be using ANGLE, since on many Windows systems the installed OpenGL is either too old or broken.
Yes, with Qt Quick 2.0 OpenGL is a mandatory requirement.
I have a few questions about Qt.
I already know that Qt and OpenGL can be used together. At the
moment we are using GLUT at my university (for window and input
management). I saw that Qt is able to do the same thing. Are there
any disadvantages of using Qt instead of GLUT? (performance
wise)
I also know that Qt can be used to build a ingame GUI. I even saw
this 3d GUI example WolfenQt. So it is possible. But does it
make sense to use Qt for an ingame GUI if you care about
perfomance?
Qt, like any other tool can be misused. But just because you use Qt this does not mean, OpenGL performance will suffer. OpenGL doesn't care about what and how its context and the drawable it's bound to are created. The biggest impact Qt has is, how it manages and delivers events; the signal/slots mechanism.
How Qt's Opengl widget works? Is it a software-only implementation or it relies on the configuration of the platform
It's a Qt widget that embeds an OpenGL context of the native platform - i.e. You're using the OpenGL libraries/setup on your platform - which doesn't have a lot to do with Qt