我正在尝试让 UBO 正常工作,但是在片段着色器中出现编译错误:
ERROR 0:5:"(": synrax error.
片段着色器:
layout(std140) uniform Colors
{
vec3 SCol;
vec3 WCol;
float DCool;
float DWarm;
}colors;
我哪里错了?
我正在尝试让 UBO 正常工作,但是在片段着色器中出现编译错误:
ERROR 0:5:"(": synrax error.
片段着色器:
layout(std140) uniform Colors
{
vec3 SCol;
vec3 WCol;
float DCool;
float DWarm;
}colors;
我哪里错了?
在片段着色器源文件的开头(第一行)放上:
#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 扩展时,这个才有效。
希望这可以帮助。