我正在关注OpenGL教程here。它在我的Arch Linux系统上运行得很好,但在Windows上却不行。
我的顶点和片段着色器代码与示例完全相同:
片段着色器代码:
#version 330 core
in vec2 UV;
out vec3 color;
uniform sampler2D myTextureSampler;
void main(){
color = texture2D( myTextureSampler, UV ).rgb;
}
顶点着色器代码:
#version 330 core
layout(location = 0) in vec3 vertexPosition_modelspace;
layout(location = 1) in vec2 vertexUV;
out vec2 UV;
uniform mat4 MVP;
void main(){
gl_Position = MVP * vec4(vertexPosition_modelspace,1);
UV = vertexUV;
}
我在Windows上遇到以下错误:
ERROR: 0:16: 'texture2D' : no matching overloaded function found (using implicit conversion)
ERROR: 0:16: 'rgb' : field selection requires structure, vector, or matrix on left hand side
ERROR: 0:16: 'assign' : cannot convert from 'const float' to 'FragUserData 3-component vector of float'
您对这个问题有什么想法吗?
答案 0 :(得分:3)
这在v330规范中列为 @mrVoid 。所有旧的纹理采样函数(1D / 2D / 3D)现已弃用,您应该使用重载:
此函数将根据您提供的采样器类型而改变,因此无需再明确定义您在函数名称中使用的类型。我在前往GL330的过程中犯了这个错误。