Запись в gl_FragColor вызывает INVALID_OPERATION на Android

Я пытаюсь освоить OGLES2 для NDK и застрял с шейдерами GLSL. Ситуация похожа натот, который уже выделен здесьНо, похоже, причина этого несколько иная.

У меня есть самые простые из возможных шейдеров.

Vertex:
#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); // ***
}
Фрагмент:
#version 110
void main(void)
{
    gl_FragColor = gl_Color;
}

Легко и просто. Я даже определяю свои треугольники прямо в пространстве клипа. Помеченный***) строка в источнике VS делаетglUseProgram призыв броситьGL_INVALID_OPERATION ошибка (и все последующиеglGetAttribLocation звонки делают то же самое), когда я запускаю приложение на моем устройстве Android 403. Я могу написатьgl_FragColor в ПС (некоторые жестко закодированыvec4 значение), но не могу даже коснутьсяgl_FrontColor/gl_BackColor значения в VS.

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

Я проверяю каждую возможную ошибку (glGetError а такжеglGetShaderInfoLog) во время компиляции и компоновки шейдеров там все ясно.

Приложение отлично работает на Windows, когда я переключаю свою реализацию OGL на JOGL (весь код начальной загрузки и рендеринга остается прежним). Я могу использовать даже атрибуты вершин, содержащие цвет, никаких проблем.

Есть ли способ исправить это поведение? Я не верю, что реализация Android OGLESэто больной, наверное, я просто скучаю по некоторым своимфункции...

Ответы на вопрос(1)

Ваш ответ на вопрос