使用如下三行代码,获取的ext是null,开发工具/iOS/Android三端一致
var gl = wcCanvas.getContext("webgl");
var ext = gl.getExtension('GL_EXT_shader_texture_lod');
console.log(ext);
但是在Shader里,使用如下fragment shader:
const fs = `
void main() {
#if defined(GL_EXT_shader_texture_lod)
gl_FragColor = vec4(1.0, 0.0, 0.0, 1.0);
#else
gl_FragColor = vec4(0.0, 0.0, 1.0, 1.0);
#endif
}
结果是:在开发工具和Android上能够正确显示蓝色(表示GL_EXT_shader_texture_lod并未被定义),而在iOS上显示的是红色,导致在复杂的shader中,iOS会进入错误的分支,使用错误的方法导致Shader编译失败,如textureCubeLodExt方法。
期望:既然这个extension没有被开启,那么iOS上的GL_EXT_shader_texture_lod不应该被定义。
你好,反馈已收到,我们核实下,有进展会同步。