我已经找了一段时间来找到这个答案 - 但我没有太多的运气。 我想要做的就是将我的正常数据传入我的顶点着色器。位置正确传递,但是当我尝试加载着色器时,我收到了“未找到正常属性”错误。OpenGL ES 2.0 - 在顶点着色器中找不到属性
我的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");
再次,该职位的工作。但“正常”无法找到。有任何想法吗?
我希望你在链接之前调用这些'glBindAttribLocation'调用,否则它们不会有任何效果。 –