Zapis do gl_FragColor powoduje INVALID_OPERATION na Androidzie

Próbuję opanować OGLES2 dla NDK i utknąć z shaderami GLSL. Sytuacja jest podobna doten już zaznaczony tutaj, ale wydaje się, że powód tego jest nieco inny.

Mam najprostsze shadery możliwe.

Wierzchołek:
#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); // ***
}
Fragment:
#version 110
void main(void)
{
    gl_FragColor = gl_Color;
}

Łatwy i prosty. Definiuję nawet moje trójkąty prosto w przestrzeni klipu. Gwiazdka (***) linia w źródle VS sprawia, żeglUseProgram zadzwoń, aby rzucićGL_INVALID_OPERATION błąd (i wszystkie kolejneglGetAttribLocation połączenia robią to samo) po uruchomieniu aplikacji na moim urządzeniu z Androidem 403. Mogę napisać dogl_FragColor w FS (niektóre na stałevec4 wartość), ale nie może nawet dotknąćgl_FrontColor/gl_BackColor wartości w VS.

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

Sprawdzam każdy możliwy błąd (glGetError iglGetShaderInfoLog) podczas kompilacji i łączenia shadera wszystko jest jasne.

Aplikacja działa poprawnie w systemie Windows, gdy przełączam implementację OGL na JOGL (wszystkie kody ładowania początkowego i renderowania pozostają takie same). Mogę używać nawet atrybutów wierzchołków zawierających kolor, żadnych problemów.

Czy istnieje sposób na naprawienie tego zachowania? Nie wierzę, że implementacja Android OGLES jestże chory, prawdopodobnie po prostu brakuje mi jego częścifunkcje...

questionAnswers(1)

yourAnswerToTheQuestion