【问题标题】:OpenGL ES 2.0: attribute not bound on vertex shaderOpenGL ES 2.0:属性未绑定在顶点着色器上
【发布时间】:2010-12-01 19:19:50
【问题描述】:

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

谢谢。

【问题讨论】:

    标签: attributes vertex-shader opengl-es-2.0


    【解决方案1】:

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

    与此相关,OpenGL 文档说:

    没有的活动属性 显式绑定将受 调用 glLinkProgram 时的链接器。可以查询分配的位置 通过调用 glGetAttribLocation。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-05-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-02-20
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多