2013-12-11 92 views
-2

我有一小部分代码,我编译了大量的麻烦。我希望有人能指出这里有什么问题。GLSL texelFetch编译错误

设置我的纹理缓存渲染:

glActiveTexture(GL_TEXTURE0 + 1); 
glBindTexture(GL_TEXTURE_BUFFER, transformsUniform); 
glTexBuffer(GL_TEXTURE_BUFFER, GL_RGBA32F, transformBuffer); 
glUniform1i(transformBufferTexture, 1); 

访问缓冲区texelFetch:

uniform samplerBuffer transforms; 
... 
vec4 v(texelFetch(transforms, 0)); 

精确编译器错误:

ERROR: 0:10: error(#132) Syntax error: "texelFetch" parse error 
ERROR: error(#273) 1 compilation errors. No code generated 

我已经检查了我的着色器语言版本与glGetString(GL_SHADING_LANGUAGE_VERSION);和它说4.2,所以吨帽子不是问题。

+4

你有一个'#version'指令在着色器? –

回答

1

GLSL不支持C++ - 风格的初始化与你使用的语法:

vec4 v(texelFetch(transforms, 0)); 

只需使用赋值运算符:

vec4 v = texelFetch(transforms, 0); 
2

试试这个:

vec4 v = texelFetch(transforms, 0); 

“标准” C++ - 风格的行内声明/你正在试图做的是由GLSL规范禁止施工,请参阅page 171declaration:语法定义:

declaration: 
    function_prototype SEMICOLON 
    init_declarator_list SEMICOLON 
    PRECISION precision_qualifier type_specifier SEMICOLON 
    type_qualifier IDENTIFIER LEFT_BRACE struct_declaration_list RIGHT_BRACE SEMICOLON 
    type_qualifier IDENTIFIER LEFT_BRACE struct_declaration_list RIGHT_BRACE IDENTIFIER SEMICOLON 
    type_qualifier IDENTIFIER LEFT_BRACE struct_declaration_list RIGHT_BRACE IDENTIFIER LEFT_BRACKET RIGHT_BRACKET SEMICOLON 
    type_qualifier IDENTIFIER LEFT_BRACE struct_declaration_list RIGHT_BRACE IDENTIFIER LEFT_BRACKET constant_expression RIGHT_BRACKET SEMICOLON 
    type_qualifier SEMICOLON 
    type_qualifier IDENTIFIER SEMICOLON 
    type_qualifier IDENTIFIER identifier_list SEMICOLON