OpenGL 纹理未找到匹配的重载函数

OpenGL texture no matching overload function found

首先是我的 Fragmenshader 代码。

#version 330 core
struct Material{
       sampler2D diffuse;
};

struct Light{
vec3 position;

vec3 ambient;
vec3 diffuse;

};

in  vec3 Normal;
in  vec3 FragPos;
in vec3 TexCoords;

out vec4 color;

uniform vec3 viewPos;
uniform Material material;
uniform Light light;

void main()
{
 //ambient
 vec3 ambient = light.ambient * vec3(texture(material.diffuse, TexCoords));
 //Diffuse
 vec3 norm = normalize(Normal);
 vec3 lightDir = normalize(light.position - FragPos);
 float diff = max(dot(norm,lightDir),0.0);
 vec3 diffuse = light.diffuse * diff *vec3(texture(material.diffuse,TexCoords));
 color = vec4(ambient+diffuse,1.0f);

 }

如果我想编译我得到错误: 'texture': 未找到 mathcing 重载函数(使用隐式转换) 我查看了 GLSL 文档,但我看起来是正确的。之后我在我的 OpenGL 文件中搜索了一个错误...但我看起来还不错。

您正在尝试使用 3D 坐标从 2D 采样器读取数据。将 in vec3 TexCoords 更改为 in vec2 TexCoords 或将纹理查找从 texture(material.diffuse, TexCoords) 更改为 texture(material.diffuse, TexCoords.xy)