2010-12-01 130 views
1

我正在开发一个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绑定?我认为如果我的模型没有纹理,我必须使用不同的顶点和片段着色器,不是吗?

谢谢。

回答

1

是的,你应该有没有纹理的模型的另一个着色器。否则,我认为你会遇到依赖于实现的行为。

相关人士认为,OpenGL的文件说:不属于 明确绑定

活动属性将被 连接绑定时glLinkProgram被调用。分配的位置可以通过调用glGetAttribLocation来查询 。

所以如果顶点属性被启用,它将尝试从其中一个属性获取vertexTexCoord。我不确定如果启用无纹理模型所需的属性数量不会超过一定数量,并且您不应该依赖这样的事情。使用另一个着色器。

相关问题