游戏专题 应用下载入口

[堕落魔法少女1.0]着色器有问题(有能力调整的看)

文章 分类: 日系游戏 2026-10-2 17:12 阅读量:44

核心原因

 gl.getAttribLocation(program, attributeName) 这个函数,第一个参数必须是链接成功的WebGL程序对象。
你现在传给它的不是有效的program,常见几种情况:

1. 着色器编译失败 / 程序链接失败, gl.linkProgram(program) 出错,program是无效对象,但代码没做判断,直接拿去调用 getAttribLocation 
​
2. 变量写错:把 shader (着色器)当成 program (程序)传进去了
​
3. 异步加载问题:还没等着色器、程序构建完成,就提前执行了 getAttribLocation 
​
4. program变量为 null/undefined 

快速排查方案

1. 在 linkProgram 之后,一定要检查链接状态

 

2. 确认调用写法:
✅ 正确: gl.getAttribLocation(program, 'aPosition') 
❌ 错误:把顶点着色器/片元着色器对象传给第一个参数
​
3. 打印 console.log(program) ,看它是不是 WebGLProgram ,如果是null就说明前面创建/链接出错了

应用下载入口
文章目录