Ubuntu18.04下OpenGL3.0(GLSL130)着色器编译INTCONSTANT错误求助
解决GLSL 130着色器编译的语法错误问题
嘿,我碰到过类似的坑!你收到的unexpected INTCONSTANT错误,本质是GLSL编译器在不该出现整数的位置读到了整数常量,结合错误提示里的0:7(2)位置信息,大概率是你的着色器代码里混进了多余的行号或者无用数字。
排查与解决步骤:
检查着色器文件的完整内容
打开你的顶点和片段着色器文件,仔细查看每一行的开头、结尾以及文件末尾,是不是复制代码时不小心把编辑器显示的行号(比如有些编辑器会自动显示行号,复制时带进去了)或者其他多余数字粘进来了?你的代码本身语法是没问题的,但如果文件最后多了个7之类的数字,编译器就会直接懵掉。重新整理干净的着色器代码
把下面的代码复制到空白文件里保存,确保没有任何多余内容:顶点着色器
#version 130 in vec4 position; void main(){ gl_Position = position; }片段着色器
#version 130 out vec4 fragment; void main(){ fragment = vec4(1.0, 0.0, 0.0, 1.0); }顺带确认OpenGL上下文版本
虽然这次错误是语法问题,但还是要确保你创建的OpenGL上下文确实是3.0版本(对应GLSL 130),版本不匹配也可能触发奇怪的解析错误,不过优先解决代码里的多余内容就好。
错误原因分析:
GLSL编译器读到文件末尾时,本来应该结束解析流程,但它意外看到了一个整数常量(比如不小心粘进来的行号数字),所以就抛出了syntax error, unexpected INTCONSTANT, expecting $end的错误,属于典型的「代码里混了不该有的冗余内容」问题。
内容的提问来源于stack exchange,提问作者ssaattww
相关产品推荐
相关产品推荐

