【问题标题】:OpenGL on OS : shader won't compileOS 上的 OpenGL:着色器无法编译
【发布时间】:2015-09-28 15:52:13
【问题描述】:

我曾在 IOS 上使用 OpenGL ES,但现在我想在操作系统上尝试使用 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':语法错误:语法错误

【问题讨论】:

  • 它是哪个版本,错误字符串是什么?
  • 错误是 :ERROR: 0:9: 'vec2' : syntax error: syntax error ,用于顶点着色器。和错误:0:6:'vec2':语法错误:片段的语法错误

标签: opengl operating-system glsl shader


【解决方案1】:

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

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

#define highp
#define mediump
#define lowp

【讨论】:

    猜你喜欢
    • 2018-05-30
    • 2015-10-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多