0

我正在尝试让 UBO 正常工作,但是在片段着色器中出现编译错误:

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

片段着色器:

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

我哪里错了?

4

1 回答 1

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 扩展时,这个才有效。

希望这可以帮助。

于 2013-01-22T20:37:41.503 回答