使用UBO编译片段着色器时出现OpenGLSL错误

时间:2013-01-22 16:43:27

标签: opengl compiler-errors fragment-shader

我正在努力让UBO工作,但是我在片段着色器中遇到了编译错误:

ERROR 0:5:"(": synrax error.

Fragment Shader:

layout(std140) uniform Colors
{
    vec3  SCol;
    vec3  WCol;
    float DCool;
    float DWarm;
}colors;

我哪里错了?

1 个答案:

答案 0 :(得分:1)

在片段着色器源文件(第一行)的开头放置:

#version 140

这意味着您告诉GLSL编译器您使用着色语言版本1.40(当然,您可以使用更高版本 - 有关详细信息,请参阅Wikipedia。)

或者,如果您的OpenGL驱动程序(和/或硬件)不完全支持GLSL 1.40(这是OpenGL 3.1的一部分),但只支持GLSL 1.30(OpenGL 3.0),您可以尝试以下操作:

#version 130
#extension GL_ARB_uniform_buffer_object : require

但是,只有当您的OpenGL 3.0驱动程序支持GL_ARB_uniform_buffer_object扩展时,此工作才有效。

希望这有帮助。