Unifying the GLSL 3 and GLSL ES 2 shaders
OpenGL 3 provides support for OpenGL Shading Language. In particular, OpenGL 3.2 Core Profile supports the GLSL 1.50 Core Profile. On the other hand, OpenGL ES 2 provides support for GLSL ES Version 1.0, and OpenGL ES 3 supports GLSL ES 3.0. There are minor syntax differences between these three GLSL versions, which we have to abstract in order to write portable shaders. In this recipe, we will create a facility to downgrade desktop OpenGL shaders, to become shaders compatible with OpenGL ES Shading Language 1.0.
Note
OpenGL ES 3 has backwards-compatible support for OpenGL ES Shading Language 1.0. For this purpose, we put #version 100
at the beginning of our shaders. However, if your application targets only the most recent OpenGL ES 3, you can use the marker #version 300 es
and avoid some conversions. Refer to the specification of OpenGL ES Shading Language 3.0 for more details at http://www.khronos.org/registry/gles/specs/3.0/GLSL_ES_Specification_3...