我正在开发一个Android应用程序。

我有以下顶点着色器。

"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 Unbound,会有任何问题吗?我认为如果我的模型没有纹理,我必须使用其他顶点和片段着色器,不是吗?

谢谢。

有帮助吗?

解决方案

是的,您应该有另一个无纹理的模型着色器。否则,我认为您将体验到实施依赖行为。

与此相关的是,OpenGL文档说:

当调用GllinkProgram时,未明确绑定的活动属性将被链接器绑定。可以通过调用GlgetAttriblocation查询分配的位置。

因此,如果启用了顶点属性,它将尝试从其中一个属性获取Vertextexcoord。我不确定如果启用了不介绍模型所需的属性数量不超过数量的数量,您不应该依靠这样的事情。使用另一个着色器。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top