jjzjj

java - 'texture2D' : No matching overloaded function found OpenGL ES2?

coder 2023-12-01 原文

我正在做一个项目,为了那个项目,我必须通读一本名为“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 设备上的视口(viewport)是空白的,只有清晰的颜色我显示设置。

最佳答案

varying vec4 v_TextureCoordinates;
        ^^^^

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

vec4 texture2D(sampler2D sampler, vec2 coord)
vec4 texture2D(sampler2D sampler, vec2 coord, float bias)

...两者都不接受 coordvec4

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

gl_FragColor = texture2D(u_TextureUnit, v_TextureCoordinates.xy );

关于java - 'texture2D' : No matching overloaded function found OpenGL ES2?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24335975/

有关java - 'texture2D' : No matching overloaded function found OpenGL ES2?的更多相关文章

随机推荐