'texture2D':找不到匹配的重载函数OpenGL ES2 Android(JAVA)

use*_*616 7 java android opengl-es texture2d

我正在研究一个项目,对于那个项目,我不得不浏览一本名为"OpenGL ES 2 For Android:快速入门指南"的书.所以当我进行纹理处理时,我得到的错误是:

'texture2D' : No matching overloaded function found
Run Code Online (Sandbox Code Playgroud)

当我编译着色器时.着色器代码:

// 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;
}
Run Code Online (Sandbox Code Playgroud)

我为我的项目尝试了相同的着色器以及与书中完全相同的代码但是当我编译着色器时它仍然给我相同的错误,并且android设备上的视口是空白的,只是我设置的清晰颜色显示.

gen*_*ult 8

varying vec4 v_TextureCoordinates;
        ^^^^
Run Code Online (Sandbox Code Playgroud)

texture2D()ES 2.0 中恰好有两个重载:

vec4 texture2D(sampler2D sampler, vec2 coord)
vec4 texture2D(sampler2D sampler, vec2 coord, float bias)
Run Code Online (Sandbox Code Playgroud)

......这两者都不接受vec4coord.

切掉v_TextureCoordinates使用swizzle 的最后两个向量组件:

gl_FragColor = texture2D(u_TextureUnit, v_TextureCoordinates.xy );
Run Code Online (Sandbox Code Playgroud)