【问题标题】:Error compiling GLSL shader in linux在 Linux 中编译 GLSL 着色器时出错
【发布时间】:2012-08-24 08:50:45
【问题描述】:

我最近在我的 Windows 机器上使用 OpenGL 编写了一个基本的渲染引擎,在这方面一切都运行良好。不幸的是,当我试图将它带到运行 Ubuntu 12.04 的笔记本电脑上时,出现了一些复杂情况,最初是链接设置和库是问题,但我设法解决了所有问题,我目前的问题是编译 GLSL 着色器,当我编译了顶点着色器和片段着色器,但出现以下错误。

'0:2(14):预处理器错误:语法错误,意外 IDENTIFIER,期待 NEWLINE
'

这是我的顶点着色器的代码。

#version 330 core

layout(location = 0) in vec3 position;
layout(location = 1) in vec2 uv;
layout(location = 2) in vec3 normal;

struct DirectionalLight{
    vec3 direction;
    vec3 color;
    vec3 ambient;
};

uniform mat4 modelMatrix;
uniform mat4 viewMatrix;
uniform mat4 projectionMatrix;
uniform DirectionalLight dLight;

out vec2 iUv;
out vec3 iPosition;
out vec3 iNormal;
out vec3 lightDir;

void main()
{
    iUv = uv;
    iPosition = vec3(viewMatrix * modelMatrix * vec4(position,1));
    iNormal = normal;
    lightDir = vec3(normalize(viewMatrix * vec4(dLight.direction, 0)));

    gl_Position =  projectionMatrix * viewMatrix * modelMatrix * vec4(position,1);
}

有什么想法吗?

【问题讨论】:

    标签: linux compiler-errors glsl shader


    【解决方案1】:
    1. 尝试在着色器程序的末尾添加更多新的空白行。
    2. 尝试使用文本编辑器 (Ubuntu) 创建代码的新副本。

    【讨论】:

      【解决方案2】:

      在我的情况下改变

      #version 330 core
      

      #version 330
      

      帮助。

      【讨论】:

      • 您当然知道 OP 可能不想使用兼容性配置文件?
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多