You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

GLSL 330 core片段着色器切换Linux gcc后编译报错如何解决?

问题原因

你遇到的编译错误是向量维度不匹配导致的,和GLSL版本、glad配置无关:
你定义的ambient为vec4类型,但diffuse、specular均为vec3类型,三者执行加法运算时维度不一致。不同平台的GLSL编译器校验严格度不同,Windows下部分显卡驱动会对这类小问题做隐式兼容处理,而Linux下的Mesa驱动对GLSL规范的执行更严格,因此会直接抛出编译错误。

修复步骤

  1. 修改ambient变量的定义,统一光照计算的维度为3维向量:
    将原代码
vec4 ambient = ambientStrength * vec4(ambLig,1.0);

替换为

vec3 ambient = ambientStrength * ambLig;
  1. 调整最后一行FragColor的计算逻辑,将光照结果转为4维向量后再和纹理采样值运算:
FragColor = texture(texture0, TexCoord) * vec4(ambient + diffuse + specular, 1.0);

修改后即可正常编译运行。


内容的提问来源于stack exchange,提问作者agent25

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 19:45:04