OS上的OpenGL:shader不会编译

时间:2015-09-28 07:39:00

标签: opengl operating-system glsl shader

我在IOS上使用OpenGL ES上的bevor,但现在我想在操作系统上尝试使用OpenGl。我有非常基本的测试着色器,但不知何故,它不会编译?有什么我需要了解的OpenGl,那里有什么不同。

这些着色器:

attribute vec4 position;
attribute vec2 texCoord;
attribute vec3 normal;


varying lowp vec2 vTexCoord;

uniform mat4 modelViewMatrix;
uniform mat4 projectionMatrix;
uniform mat3 normalMatrix;

void main()
{
    vTexCoord = texCoord;

    gl_Position = projectionMatrix*modelViewMatrix * position;
}

片段:

uniform sampler2D uSampler;

varying lowp vec2 vTexCoord;

void main()
{
    lowp vec4 texCol = texture2D(uSampler, vTexCoord);

    gl_FragColor = vec4(texCol.rgba);
}

出现的错误是:

错误:0:9:' vec2' :语法错误:语法错误

1 个答案:

答案 0 :(得分:5)

精度说明符(lowp,mediump和highp)是GLSLES的一部分,而不是GLSL,所以要在GLSL上编译,你应该删除它们。

如果你想在GLSL和GLSLES上使用相同的着色器源,那么你可以通过在着色器之前包含这样的字符串来#define它们。

#define highp
#define mediump
#define lowp