我正在开展一个项目,对于那个项目,我不得不浏览一本名为“#34; OpenGL ES 2 For Android:快速入门指南"”的书。 因此,当我进行纹理处理时,我得到了错误:
'texture2D' : No matching overloaded function found
编译着色器时。 着色器代码:
// Fragment shader
precision mediump float;
uniform sampler2D u_TextureUnit;
varying vec4 v_TextureCoordinates;
void main()
{
gl_FragColor = texture2D(u_TextureUnit, v_TextureCoordinates);
}
// Vertex shader
uniform mat4 u_Matrix;
attribute vec4 a_Position;
attribute vec4 a_TextureCoordinates;
varying vec4 v_TextureCoordinates;
void main()
{
gl_Position = u_Matrix * a_Position;
v_TextureCoordinates = a_TextureCoordinates;
}
我为我的项目尝试了相同的着色器,并且与本书中的代码完全相同,但是当我编译着色器时它仍然给我同样的错误,并且android设备上的视口是空白的,只是清晰的颜色我设置显示。
答案 0 :(得分:8)
varying vec4 v_TextureCoordinates;
^^^^
ES 2.0中只有两个texture2D()
重载:
vec4 texture2D(sampler2D sampler, vec2 coord)
vec4 texture2D(sampler2D sampler, vec2 coord, float bias)
...两者都不接受vec4
的{{1}}。
使用swizzle切割coord
的最后两个向量组件:
v_TextureCoordinates