我正在努力让UBO工作,但是我在片段着色器中遇到了编译错误:
ERROR 0:5:"(": synrax error.
Fragment Shader:
layout(std140) uniform Colors
{
vec3 SCol;
vec3 WCol;
float DCool;
float DWarm;
}colors;
我哪里错了?
答案 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扩展时,此工作才有效。
希望这有帮助。