如下图,错误很奇怪。我在 iPad 程序中使用 OpenGLES 2.0 和着色器,但代码或项目配置似乎有问题。模型完全没有颜色(黑色)绘制。
2012-12-01 14:21:56.707 医疗保险 [6414:14303] 程序链接日志:
警告:找不到与 BindAttributeLocation 请求匹配的顶点着色器属性“颜色”。
警告:片段着色器未读取顶点着色器“colorVarying”的输出
[切换到进程 6414 线程 0x1ad0f]
我glBindAttibLocation
用来传递位置和正常数据,如下所示:
// This needs to be done prior to linking.
glBindAttribLocation(_program, INDEX_POSITION, "position");
glBindAttribLocation(_program, INDEX_NORMAL, "normal");
glBindAttribLocation(_program, INDEX_COLOR, "color"); //pass color to shader
我的项目中有两个着色器。那么对于这个奇怪的错误有什么好的解决方案吗?非常感谢!
我的顶点着色器:
uniform mat4 modelViewProjectionMatrix;
uniform mat3 normalMatrix;
attribute vec4 position;
attribute vec3 normal;
attribute vec4 color;
varying lowp vec4 DestinationColor;
void main()
{
//vec4 a_Color = vec4(0.9, 0.4, 0.4, 1.0);
vec4 a_Color = color;
vec3 u_LightPos = vec3(1.0, 1.0, 2.0);
float distance = 2.4;
vec3 eyeNormal=normalize(normalMatrix * normal);
float diffuse = max(dot(eyeNormal, u_LightPos), 0.0); // remove approx ambient light
diffuse = diffuse * (1.0 / (1.0 + (0.25 * distance * distance)));
DestinationColor = a_Color * diffuse; // average between ambient and diffuse a_Color * (diffuse + 0.3)/2.0;
gl_Position = modelViewProjectionMatrix * position;
}
我的片段着色器是:
varying lowp vec4 DestinationColor;
void main()
{
gl_FragColor = DestinationColor;
}
很简单。非常感谢!