Escribir en gl_FragColor causa INVALID_OPERATION en Android

Estoy tratando de dominar OGLES2 para NDK y pegado con sombreadores GLSL. La situación es similar ael ya resaltado aquí, pero parece que la razón detrás de esto es algo diferente.

Tengo los shaders más simples posibles.

Vértice:
#version 110
attribute vec3 vPosition;
void main(void)
{
    gl_Position = vec4(vPosition, 1.0);
    gl_FrontColor = gl_BackColor = vec4(0.3, 0.3, 0.3, 1); // ***
}
Fragmento:
#version 110
void main(void)
{
    gl_FragColor = gl_Color;
}

Fácil y directo. Incluso defino mis triángulos rectos en el espacio del clip. La estrella (***) la línea en la fuente VS hace queglUseProgram llama a tirar elGL_INVALID_OPERATION error (y todos los posterioresglGetAttribLocation las llamadas hacen lo mismo) cuando ejecuto la aplicación en mi dispositivo Android 403. Puedo escribir agl_FragColor en FS (algunos codificadosvec4 valor), pero ni siquiera puede tocar elgl_FrontColor/gl_BackColor valores en VS.

E/Adreno200-ES20(16211): <qgl2DrvAPI_glUseProgram:1344>: GL_INVALID_OPERATION
E/Adreno200-ES20(16211): <qgl2DrvAPI_glGetAttribLocation:531>: GL_INVALID_OPERATION

Verifico todos los errores posibles (glGetError yglGetShaderInfoLog) Durante la compilación y vinculación del sombreado, todo está claro allí.

La aplicación funciona bien en Windows cuando cambio mi implementación OGL a una JOGL (todo el código de arranque y representación sigue siendo el mismo). Puedo usar incluso los atributos de un vértice que contienen un color, sin ningún problema.

¿Hay alguna manera de arreglar este comportamiento? No creo que la implementación de Android OGLES seaese enfermo, probablemente me estoy perdiendo algo de sucaracteristicas...

Respuestas a la pregunta(1)

Su respuesta a la pregunta