glslangvalidator编译GLSL着色器报unexpected IDENTIFIER语法错误如何解决
报错原因及修复方案
Error :deferred.frag:954: "":syntax error,unexpected IDENTIFIER,expecting RIGHT_PAREN
触发报错的核心原因有两处:
- 宏定义大小写不匹配:你定义的浮点类型宏为
FXaaFloat(F后接大写X),但后续函数声明、返回值定义中使用的是FxaaFloat(F后接小写x)。GLSL宏区分大小写,未定义的FxaaFloat会被编译器识别为未知标识符,触发语法错误。 - 语句缺少结尾分号:
#else分支中的return rgba.y末尾没有添加分号,不符合GLSL语法规范。
修复后可正常编译的代码如下:
// 统一宏名大小写 #define FxaaFloat float #define FxaaFloat4 float4 #if(FXAA_GREEN_AS_LUMA==0) FxaaFloat FxaaLuma(FxaaFloat4 rgba) { return 0.299*rgba.x+0.587*rgba.y+0.114*rgba.z; } #else FxaaFloat FxaaLuma(FxaaFloat4 rgba) { // 补充结尾分号 return rgba.y; } #endif
内容的提问来源于stack exchange,提问作者杨万里
相关产品推荐
相关产品推荐

