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

これは、シェーディング言語のバージョン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拡張機能をサポートしている場合にのみ機能します。

お役に立てれば。

于 2013-01-22T20:37:41.503 に答える