

It works, but I'm still interested in better fixes and explanations of what exactly is going on. Is there a solution to this problem? I have spent a few hours searching and found nothing. I am confident of the correctness of my use of OpenGL ES 2.0, because, apart from working under Qt on Windows and Linux, the same code also works perfectly outside Qt on Android (in native code) and iOS.Īccording the the Qt documentation, QOpenGLFunctions 'provides cross-platform access to the OpenGL ES 2.0 API'. I discovered that only pixels with no transparency (alpha = 1) were drawn.

However, the display was incorrect - some graphics were missing.


I found I could get some graphics on the display by deleting the 'precision' statements from the shaders. I tried inserting '#version 100' at the start of the shader programs, but that didn't help: the error message this time was that version 100 was not supported. This probably indicates that the shader compiler expects a different version of the shader language. When I first tried running the app it crashed because it could not compile the shader programs, complaining that the 'precision' keyword was syntactically incorrect. However, on the Mac, drawing the graphics does not work. I use Qt 5 and Qt Creator on all three platforms. Everything works perfectly (using the same Qt app) on Windows and Linux. It draws using OpenGL ES 2.0, using QOpenGLFunctions to resolve the OpenGL functions. OpenGL ES 1.0 and 1.1 were the first portable mobile graphics APIs, defined relative to the OpenGL 1.I have a Qt app that uses a QOpenGLWidget for its main window. It remains a prevalent API today, and still is the most widely available 3D graphics API, and remains a solid choice to target the widest range of devices in the market. OpenGL ES 2.0 was the first portable mobile graphics API to expose programmable shaders in the then latest generation of graphics hardware. OpenGL ES 3.0 was another evolutionary step for OpenGL ES, notably including multiple render targets, additional texturing capabilities, uniform buffers, instancing and transform feedback. OpenGL ES 3.1 - Bringing Compute to Mobile Graphicsĭespite being only a bump in the minor revision of the API, OpenGL ES 3.1 was an enormous milestone for the API, as it added the ability to do general purpose compute in the API, bringing compute to mobile graphics. The latest in the series, OpenGL ES 3.2 added additional functionality based on the Android Extension Pack for OpenGL ES 3.1, which brought the mobile API's functionality significantly closer to it's desktop counterpart - OpenGL. OpenGL ES API Versions at a Glance OpenGL ES 3.2 - Additional OpenGL functionality
