GLSL texelFetch编译错误
GLSL texelFetch Compile Error
我有少量代码,编译时遇到了很多麻烦。我希望有人能指出这里出了什么问题。
设置渲染的纹理缓冲区:
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
,所以这不是问题所在。
试试这个:
vec4 v = texelFetch( transforms, 0 );
GLSL规范禁止您尝试执行的"标准"C++风格的内联声明/构造,请参阅第171页的declaration:
语法定义:
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
GLSL不支持使用您使用的语法进行C++风格的初始化:
vec4 v( texelFetch( transforms, 0 ) );
相反,只需使用赋值运算符:
vec4 v = texelFetch( transforms, 0 );
相关文章:
- 用MacOS Mojave编译C++:致命错误:mpi.h:没有这样的文件或目录
- std::is_base_of表示ctor编译错误
- 我的项目不会像"undefined reference to `grpc::g_core_codegen_interface'"那样使用未定义的引用错误进行编译
- 在没有定义返回类型的函数中返回布尔值,并将结果保存在无错误的char编译中-为什么
- Qt5:使用QCommandLineParser类时出现奇怪的编译错误
- Qt Cmake 错误编译"GuiSupportQt not found"
- Opengl 精度转换错误编译错误 E0415
- 库将ARM架构错误编译为架构X64
- RT 音频 Mac 错误 g++ 编译错误
- 错误编译Boost.log
- 错误编译QT创建者 / QT窗口小部件示例
- 错误编译MIPS32
- Visual Studio 2013 中的错误(编译和运行代码)
- 链接错误编译qt项目在visual 2010
- 无法用模板错误编译nsgmls
- 奇怪的错误.编译失败
- 如果有人调用c++中的方法,则强制错误(编译时)
- 来自autoconf测试的错误编译命令
- 时间限制超出错误C++编译
- SFML 2.3 和 CodeBlocks 错误编译