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
これは、シェーディング言語のバージョン1.40を使用することをGLSLコンパイラに通知していることを意味します(もちろん、より高いバージョンを使用できます。詳細については、ウィキペディアを参照してください)。
または、OpenGLドライバー(および/またはハードウェア)がGLSL 1.40(OpenGL 3.1の一部)を完全にサポートしておらず、GLSL 1.30(OpenGL 3.0)のみをサポートしている場合は、次のことを試すことができます。
#version 130
#extension GL_ARB_uniform_buffer_object : require
ただし、これは、OpenGL3.0ドライバーがGL_ARB_uniform_buffer_object拡張機能をサポートしている場合にのみ機能します。
お役に立てれば。