收藏
回答

GL_EXT_shader_texture_lod在iOS和Android上的定义不一致

使用如下三行代码,获取的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不应该被定义。


回答关注问题邀请回答
收藏

1 个回答

登录 后发表内容
问题标签