[Interest] OpenGL weirdness

Till Oliver Knoll till.oliver.knoll at gmail.com
Thu Jul 24 20:33:04 CEST 2014


Am 24.07.2014 um 14:13 schrieb Yves Bailly <Yves.Bailly at verosoftware.com>:

> 
> [Whenever a "Core Profile" is explicitly requested rendering stops workin]
> 
> If I try using some other version:
>   fmt.setVersion(3, 3);
>   fmt.setProfile(QGLFormat::CoreProfile);
> ...getGetString(GL_VERSION) gives "3.3.0" (as expected),

Not directly related to the actual problem, but just to add: in my understanding the actual OpenGL driver is free to choose a higher API version (e.g. 4.4), even when you explicitly request an older one (e.g. 3.3) - as long as the returned context is backwards-compatible, that is!

I am not sure whether that is the case here (all 3.3 shaders and GL code would run without modification in 4.4), but in general that is so.

So the fact that you really received a 3.3 context when asking for one from a 4.4 capable driver is "possible" and maybe even "likely", but not necessarily "to be expected".

IIRC on OS X 10.9 you always get a 4.1 context, even when asking for a 3.2 context (on hardware that supports it).

> but no triangle displayed.

Probably again because you are getting a "Core Profile".

> With:
>   fmt.setVersion(2, 1);
> ...getGetString(GL_VERSION) gives "4.4.0" (unexpected), and no triangle displayed.

As already mentioned in a previous reply: maybe a bit "unexpected", but totally fine, because you get a "Compatibility" profile.



> 
> With simply requesting the profile, without giving a version:

Doesn't make sense really: profiles are only introduced on OpenGL 3.2 and above :)
> 
> Any idea about what's going on?

I strongly assume that you're not using any "fixed pipeline" functions such as glVertex etc. ;) so my best bet would be your shader code: did you copy/paste from some older OpenGL (ES) 2 shaders?

Check the GL error state then and when and especially the shader compile/link logs (return values)!

Cheers,
  Oliver


More information about the Interest mailing list