three.js 中 this.renderer.setViewport 方法在IE浏览器失效原因问询
three.js setViewport方法IE浏览器失效原因
你调用的代码如下:
this.renderer.setViewport(50, -50, this.width, this.height);
失效核心原因如下:
- three.js版本兼容性问题:r120及之后的three.js版本已经全面放弃IE浏览器兼容,底层依赖的WebGL 2.0特性、ES6+语法IE均无法支持,本身就无法正常在IE环境运行。
- IE WebGL实现的固有Bug:即使使用支持IE11的旧版three.js,你传入的第二个视口偏移参数为
-50,不符合IE11的WebGL参数规则。标准WebGL规范允许视口x/y偏移为负数,超出画布的部分会自动裁切,但IE11的底层WebGL实现不支持负偏移值,只要传入负的x或y参数,整个视口设置会直接失效,无渲染内容输出。 - IE参数校验规则更严格:IE11对视口参数的容错率远低于Chrome、Firefox等现代浏览器,若传入的宽高不是正整数、或最终视口范围完全超出画布边界,也会触发渲染异常。
内容的提问来源于stack exchange,提问作者Liujing
相关产品推荐
相关产品推荐

