Java ';纹理2d';:找不到匹配的重载函数OpenGL ES2?

Java ';纹理2d';:找不到匹配的重载函数OpenGL ES2?,java,android,opengl-es,texture2d,Java,Android,Opengl Es,Texture2d,我当时正在做一个项目,为了这个项目,我必须阅读一本名为《OpenGL ES 2 for Android:快速入门指南》的书。 所以当我谈到纹理时,我得到的错误是: 'texture2D' : No matching overloaded function found 当我编译着色器时。 着色器代码: // Fragment shader precision mediump float; uniform sampler2D u_TextureUnit; varying vec4 v_Textu

我当时正在做一个项目,为了这个项目,我必须阅读一本名为《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设备上的视口为空白,只显示我设置的清晰颜色

varying vec4 v_TextureCoordinates;
        ^^^^
ES 2.0中正好有两个
texture2D()
重载:

vec4 texture2D(sampler2D sampler, vec2 coord)
vec4 texture2D(sampler2D sampler, vec2 coord, float bias)
…对于
coord
,它们都不接受
vec4

使用swizzle切掉
v_TextureCoordinates
的最后两个矢量分量:

gl_FragColor = texture2D(u_TextureUnit, v_TextureCoordinates.xy );