OpenGL ES 2.0:属性没有绑定在顶点着色器
问题描述:
我正在开发一个Android应用程序。OpenGL ES 2.0:属性没有绑定在顶点着色器
我有以下顶点着色器。
"attribute vec4 vertexPosition;
attribute vec4 vertexNormal;
attribute vec2 vertexTexCoord;
varying vec2 texCoord;
varying vec4 normal;
uniform mat4 modelViewProjectionMatrix;
void main()
{
gl_Position = modelViewProjectionMatrix * vertexPosition;
normal = vertexNormal;
texCoord = vertexTexCoord;
}
";
这是片段着色器:
precision mediump float;
varying vec2 texCoord;
varying vec4 normal;
uniform sampler2D texSampler2D;
void main()
{
gl_FragColor = texture2D(texSampler2D, texCoord);
}
";
是否有任何问题,如果我离开vertexTexCoord绑定?我认为如果我的模型没有纹理,我必须使用不同的顶点和片段着色器,不是吗?
谢谢。
答
是的,你应该有没有纹理的模型的另一个着色器。否则,我认为你会遇到依赖于实现的行为。
相关人士认为,OpenGL的文件说:不属于 明确绑定
活动属性将被 连接绑定时glLinkProgram被调用。分配的位置可以通过调用glGetAttribLocation来查询 。
所以如果顶点属性被启用,它将尝试从其中一个属性获取vertexTexCoord。我不确定如果启用无纹理模型所需的属性数量不会超过一定数量,并且您不应该依赖这样的事情。使用另一个着色器。