Escrever para gl_FragColor faz com que INVALID_OPERATION no Android

Eu estou tentando dominar OGLES2 para NDK e preso com shaders GLSL. A situação é semelhante aaquele já destacado aqui, mas parece que a razão por trás disso é um pouco diferente.

Eu tenho os shaders mais simples possíveis.

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 e direto. Eu até defino meus triângulos diretamente no espaço do clipe. O estrelado (***) linha na fonte VS faz com que oglUseProgram ligue para jogar oGL_INVALID_OPERATION erro (e todos os subsequentesglGetAttribLocation chamadas fazem o mesmo) quando eu corro o aplicativo no meu dispositivo Android 403. Eu posso escrever paragl_FragColor em FS (alguns codificadosvec4 valor), mas não pode nem tocargl_FrontColor/gl_BackColor valores em VS.

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

Eu checo todos os erros possíveis (glGetError eglGetShaderInfoLog) durante a compilação e ligação do shader, tudo está claro lá.

O aplicativo funciona bem no Windows quando eu alterno minha implementação de OGL para uma de JOGL (todo o código de bootstrapping e renderização permanece o mesmo). Eu posso usar até mesmo um vertex atributos contendo uma cor, sem problemas em tudo.

Existe uma maneira de corrigir esse comportamento? Eu não acredito que a implementação do Android OGLES sejanaquela doente, provavelmente eu só estou perdendo alguns dos seuscaracterísticas...

questionAnswers(1)

yourAnswerToTheQuestion