报错原因
根据官方更新说明
为更好的支持跨平台,cesium自1.102开始默认使用webgl2上下文。
此时使用opengl es2.0语法会遇到报错
解决办法
- 初始化viewer时指定使用webgl1
viewer = new Cesium.Viewer("map", {
contextOptions: {
requestWebgl1: true,
})
- 修正glsl代码
- 将顶点着色器中的
varying
替换为out
- 将片元着色器中的
varying
替换为in
- 将片元着色器中的
texture2D
替换为texture
- 修改片元着色器中的 gl_FragColor
// 原着色器
uniform sampler2D uTexture;
void main(){
gl_FragColor = texture(uTexture, vTextureCoord);
}
// 修改后着色器
uniform sampler2D uTexture;
out vec4 fragColor; // 此变量名只要符合程序命名要求即可,不能以gl_开头
void main(){
fragColor= texture(uTexture, vTextureCoord);
}