我正在尝试在Mac上使用Java创建一个GLSL纹理着色器,但是Mac不支持任何高于#version 120的版本。如何移植这个330着色器:
//this is my Vertex Shader
#version 330
layout (location = 0) in vec3 position;
layout (location = 1) in vec2 texCoord;
out vec2 texCoord0;
uniform mat4 transform;
void main()
{
gl_Position=transform*vec4(position,1.0);
texCoord0=texCoord;
}
这是我的片段着色器。
#version 330
in vec2 texCoord0;
uniform sampler2D sampler;
out vec4 gl_FragColor;
void main()
{
gl_FragColor=texture2D(sampler,texCoord0.xy);
}
如何将这些着色器转换为GLSL 120,而不会失去功能?
in
->attribute
,out
->varying
。删除layout
限定词。删除gl_FragColor
声明。 - genpfaulttexture2D
已被弃用,并且在核心配置文件着色器中不存在。这个着色器可能在其他平台上工作,因为编译器会回退到兼容配置文件(通常会有一两个警告),但在OS X上不会工作,除非您将该函数替换为texture
。还要删除gl_FragColor
的声明,因为您不允许重新声明GLSL内置变量。 - Andon M. Coleman