GLES2 implementation