나는 이것에 대한 대답을 잠시 동안 찾았지만, 나는별로 행운이 없다. 내가하려는 것은 정상 데이터를 버텍스 쉐이더에 전달하는 것입니다. 위치가 제대로 전달되고 있지만 셰이더를로드하려고 할 때 "정상적인 특성을 찾을 수 없습니다"라는 오류가 발생합니다.OpenGL ES 2.0 - 버텍스 쉐이더에서 애트리뷰트를 찾을 수 없다.
내 ATTRIB 값은 enum입니다.
Iphone 개발을 위해 OpenGL ES 2.0에서 큐브를 만들었습니다.
내 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);
}
drawframe은 다음과 같습니다에 내가 속성 값을 업데이트 부분 :
// 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");
다시 위치가 작동합니다. 그러나 "정상적인"것은 발견 될 수 없다. 어떤 아이디어?
링크하기 전에이'glBindAttribLocation' 호출을 만들어 주시길 바랍니다. 그렇지 않으면 효과가 없습니다. –