如何使用HTMLVideoElement源检测WebGL texImage2D的浏览器支持

时间:2017-03-03 16:32:37

标签: internet-explorer webgl

Microsoft IE11支持WebGL,但不支持使用gl.texImage2D()从视频加载纹理。见" bug"在这里:

http://connect.microsoft.com/IE/feedbackdetail/view/941984/webgl-video-upload-to-texture-not-supported

除了专门检测IE11并将其列入黑名单之外,有没有办法检测浏览器对此功能的支持?

当我尝试将视频元素用作纹理源时,我在控制台中看到以下错误:

WEBGL11072: INVALID_VALUE: texImage2D: This texture source is not supported
WEBGL11098: drawArrays: The texture is a non-power-of-two texture or not mipmap complete

我或许能够找到一种机制来检测对NPOT纹理的支持,我尝试加载的视频帧可能永远都是。

1 个答案:

答案 0 :(得分:1)

  

有没有办法检测浏览器对此功能的支持?

从你的问题看起来很直接。创建一个小视频,尝试通过拨打texImage2D将其上传到纹理,然后拨打getError,如果它不是NO_ERROR,则视频不受支持。

  

我或许能够找到一种机制来检测对NPOT纹理的支持

除非IE11的WebGL中存在更多错误,否则所有WebGL的NPOT支持应该相同。 (所有WebGL 1.0s)

也就是说,如果您使用NPOT纹理,则必须将换行设置为CLAMP_TO_EDGE并将最小值过滤为NEARESTLINEAR。您也无法调用generateMipmap(在给定所需过滤的情况下也没有任何意义),同样您只能上传mip级别0。