Я некоторое время искал ответ на этот вопрос, но мне не очень повезло.Все, что я пытаюсь сделать, это передать мои обычные данные в мой вершинный шейдер.Позиции проходят корректно, однако я получаю сообщение об ошибке «Обычный атрибут не найден» при попытке загрузить мои шейдеры.
Мои значения ATTRIB являются перечислениями.
Я создал кубв OpenGL ES 2.0 для разработки под Iphone.
Мой Shader.vsh выглядит так:
attribute vec4 normal;
attribute vec4 position;
varying vec4 colorVarying;
uniform mat4 mvp_matrix;
void main()
{
//Trasform the vertex
gl_Position = mvp_matrix * position;
colorVarying = vec4(1.0, 1.0, 0.0, 0.0);
}
Часть, в которой я обновляю значения атрибутов в отрисовочном кадре, выглядит следующим образом:
// Update attribute values.
glVertexAttribPointer(ATTRIB_VERTEX, 3, GL_FLOAT, 0, 0, cubeVerticesStrip);
glEnableVertexAttribArray(ATTRIB_VERTEX);
glVertexAttribPointer(ATTRIB_NORMAL, 3, GL_FLOAT, 0, 0, cubeNormalsStrip);
glEnableVertexAttribArray(ATTRIB_NORMAL);
И часть, где я их связываю в моей функции LoadShader, выглядит следующим образом:
glBindAttribLocation(program, ATTRIB_VERTEX, "position");
glBindAttribLocation(program, ATTRIB_NORMAL, "normal");
Опять же, позиция работает.Но «нормальный» не может быть найден.Есть идеи?