java GLSL着色器无法在mac上工作
我试图在mac上用java创建GLSL纹理着色器,但mac不支持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而不丢失功能
# 1 楼答案
你只需要:
_删除
layout
限定符(包括位置分配)。你必须使用链接程序之前,针对顶点着色器的每个输入(位置0和1的索引设置为0和1,如果您不理解变量的名称)
_在顶点着色器中,将
in
替换为attribute
,将out
替换为varying
_在片段着色器中,将
in
替换为varying
并使用gl_FragColor
,但不声明它在您的情况下,在链接程序之前,您会有以下内容:
顶点着色器:
和你的片段着色器: