It's good that people are trying these big packages and that seem to work, but I'm more interested in hearing from people that are writing their own OpenGL code.
Out of curiousity, I did play a bit with the GL driver on the Pi and my own code.
My experiences so far are:
- stuff working with the old fixed function pipeline (GL1.x) is working reasonably well in most cases
- the programmable pipeline basically works, too. However, if you do stuff that goes beyond what
is allowed by GLES2/GLSL ES 1.0, you are likely to encounter problems
- some stuff like setting glPolygonMode to somehting other than GL_FILL seems to be completely ignored / not yet implemented
- there are also some precision issues
None of that is surprising, considering the VC4 gpu was never designed for desktop GL. It is quite astounding that it actually works as well as it already does.
Running one project of mine which has a fallback code path for GL2.1 on the pi resulted in a segfault at almost every draw call. It turned out that this was caused by using a shader with a loop depending on a uniform value as iteration limit (which is not required to be supported in GLES, but it is in desktop GL). After changing the shaders, things basically work, but I still get some weird graphical glitches:
Those black bands in the environment map might be some general issue with cube maps (they always appear near the edges), or some precision issue with my texcoord calculation (haven't checked that yet). The dark patches on the ground are some weirder issue. That ground plane is generated through ray-casting, but this seems not like precision issues with that approach. When outputting the texcoords as colors, I also get sane results, but as soon as I sample the texture, those blocky artifacts appear. Seems to be some issue with using texcoords which are not directly varyings (probably because they are also not dynamically uniform), but hard to tell what exactly the issue is.
"Perfection is attained not when there is nothing more to add, but when there is nothing more to remove." -- Antoine de Saint Exupéry