2012-08-24 46 views
1

我最近在Windows机器上使用OpenGL编写了一个基本的渲染引擎,所有东西在这方面运行良好。不幸的是,当我尝试将它运行到运行Ubuntu 12.04的笔记本电脑上时,出现了一些复杂情况,最初链接设置和库是问题,但我设法排除了所有问题,目前的问题是编译GLSL着色器,我编译顶点和片段着色器,我得到以下错误。在Linux中编译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); 
} 

任何想法?

回答

-1

在我的情况下改变

#version 330 core 

#version 330 

帮助。

+0

您当然知道OP可能不想使用兼容性配置文件? –

0
  1. 尝试在着色器程序结束时添加更多新的空白行。
  2. 尝试使用文本编辑器(Ubuntu)创建代码的新副本。