[Interest] Force Qt 5.4 to use ANGLE OpenGL ES 2 implementation

Andrew Knight qt at panimo.net
Sun Feb 15 12:59:58 CET 2015


Hi,

On 02/15/2015 12:55 PM, Roberto Garrido Martín wrote:
> Hi,
>
> On 15 February 2015 at 10:08, Andrew Knight <qt at panimo.net
> <mailto:qt at panimo.net>> wrote:
>
>
>
>     FTA, use the QT_OPENGL environment variable (set QT_OPENGL=angle) or
>     the application attribute
>     (QCoreApplication::__setAttribute(Qt::AA___UseOpenGLES)). From your
>     results below, it doesn't appear you've tried either.
>
>
>
> Setting QCoreApplication::__setAttribute(Qt::AA___UseOpenGLES) actually
> worked, thanks!
> Here the debug message:
>
> qt.qpa.gl <http://qt.qpa.gl>: Qt: Using EGL from libEGLd.dll
> qt.qpa.gl <http://qt.qpa.gl>: Qt: Using OpenGL ES 2.0 from libGLESv2d.dll
> qt.qpa.gl <http://qt.qpa.gl>: QWindowsEGLStaticContext::create Created
> EGL display 0x4dc49c8 v 1 . 4
> qt.qpa.gl <http://qt.qpa.gl>:
> QWindowsIntegration::createPlatformOpenGLContext QSurfaceFormat(version
> 2.0, options QFlags(), depthBufferSize 24, redBufferSize -1,
> greenBufferSize -1, blueBufferSize -1, alphaBufferSize -1,
> stencilBufferSize 8, samples -1, swapBehavior 2, swapInterval 1, profile  0)
>

Looks better.

>
> Now I'm having another error. We are using Glew-1.12.0 in order to load
> the non-Core OpenGL 1.1 functions on windows. In order to initialize
> Glew-1.12.0, glewInit() must be called first. it returns GLEW_OK when
> the initialization was successfull. It does work with Desktop OpenGL ,
> but with GLES it returns "Missing GL Version".

I haven't used GLEW, but http://glew.sourceforge.net/basic.html says 
that you need to create a valid OpenGL rendering context before calling 
glewInit(). FWICT, GLEW only works with desktop GL, so you're not going 
to have a valid desktop GL context at this point. I'm not sure what the 
value of loading OpenGL 1.1 functions would be anyway, given that you 
won't be able to use them with the ES 2 context (?)

>
> Besides, functions like glGetIntegerv   (GL_MAX_TEXTURE_SIZE,
> &maxTextureSize), are returning garbage values. It's like the OpenGL ES
> context was not created properly, so the the OpenGL commands don't work.
>
> I have called QOpenGLContext::currentContext()->makeCurrent(_appWindow);
> before our rendering library initialization, but the result is the same.

Is that call ending up in ANGLE or opengl32? Check with a debugger. Also 
try calling via QOpenGLFunctions, as you'll probably want to do that 
anyway if you decide to support both desktop/ES later.

>
> Any ideas?
>
> Cheers,
> Robert.



More information about the Interest mailing list